XML oder nicht XML - das ist hier die Frage

eZ publish
20.05.2014

Will man per Script oder per cronjob eine Node anlegen, dann hält eZ publish eine Menge Funktionen vor, die einem vermeintlich die Arbeit erleichtern sollen.

Hat man sich durch die Tücken des Objekts gekämpft, dann ist tatsächlich so.

Diesmal geht es um einen Text, der in einen XML Block geschrieben werden soll.

Ein einfacher Text - hier: "Hallo und guten Tag" - soll also in einen XML Block geschrieben werden.

Dazu wird zunächst ein neues Objekt erzeugt und das gewünschte Attribut aus der data_map geholt:

$contentObject =& $class->instantiate($userId);
$dataMap = $contentObject->attribute('data_map');
$description = $dataMap['description'];

Soweit so nachvollziehbar.

Wer ähnlich naiv gestrickt ist wie meinereiner, könnte annehmen, dass folgende Zeilen zu einem guten Ergebnis führen:

$text = "Hallo und guten Tag";
$description->setAttribute('data_text', $text);

Man übergibt dem Attribut einen Text, den Rest wird eZ publish schon machen. Doch gefehlt. So komfortabel soll es dann doch nicht sein.

eZ publish hätte schon gerne, dass der Text vorab in XML umgewandelt wird. Also machen wir das so:

$XMLContent = "Hallo und guten Tag";
$parser = new eZSimplifiedXMLInputParser( $contentObject->attribute( 'id' ) );
$parser->setParseLineBreaks( true );
$document = $parser->process( $XMLContent );
// Create XML structure
$xmlString = eZXMLTextType::domString( $document );
$description->setAttribute('data_text', $xmlString);

Zuletzt nicht vergessen: Das Attribut muss auch gespeichert werden:

$description->store();
$contentObject->store();

Und voila... es funktioniert.

comments powered by Disqus

Arbeitswelt

EL EMPLEO / THE EMPLOYMENT

EL EMPLEO / THE EMPLOYMENT

Der Argentinische Filmemacher Santiago Bou Grasso hat mit seinem Werk "EL EMPLEO / THE EMPLOYMENT" ein verstörendes Kleinod geschaffen.

Eine Welt, in der Menschen zu Objekten degradiert werden, in der die Objekt nicht mehr wahrnehmen, wer Mensch ist.

A ? B C D E F G H I J K L M N O P Q R S T U V W Z