Share » Forums » Developer » How to make xml data in module?

How to make xml data in module?

How to make xml data in module?

Tuesday 18 November 2003 8:38:03 pm - 3 replies

Author Message

Paul Forsyth

Wednesday 19 November 2003 2:07:50 am

Its a little more complicated because the string has to be valid xml for the field to work properly.

Heres a code snippet i use to add some a string and some comments. Hope it makes sense :)

paul

-----

$contentObjectAttribute =& $contentObjectAttributes[$key];
$contentClassAttribute =& $contentObjectAttribute->contentClassAttribute();

if ($contentClassAttribute->attribute("name") == "My attribute")
{
$xml = new eZXML();

// Retain the current content of the attribute.
$presentContent=$contentObjectAttribute->attribute("data_text");

// Prepare the original xml for new information.
if ($presentContent != "")
{
// Turn this content into a dom tree so we can add to it.
$originalDomTree =& $xml->domTree( $presentContent );

$originalRoot =& $originalDomTree->root();

$commentSeperator =& $originalDomTree->createElementNode( "paragraph" );
$emphasizeDomNode =& $originalDomTree->createElementNode( "emphasize" );
$emphasizeDomNode->appendChild( $originalDomTree->createTextNode( "------- Additional Comment -----------" ) );

$commentSeperator->appendChild($emphasizeDomNode);

$originalRoot->appendChild( $commentSeperator );
}

// Now re-set the attribute with our new comments. Comments
// contains new xml
$contentObjectAttribute->setAttribute("data_text", $comments);

// Turn the new comments into xml by invoking the ez parsing routines.
$xmlText = new eZXMLText( eZXMLTextType::rawXMLText( $contentObjectAttribute ), $contentObjectAttribute );
$input =& $xmlText->attribute( 'input' );
$isValid = $input->validateInput( $http, "ContentObjectAttribute", $contentObjectAttribute );

// Create a new tree with our newly formed xml.
$newDomTree =& $xml->domTree( $contentObjectAttribute->attribute("data_text") );
$newRoot =& $newDomTree->root();

// First determine whether we should store the new or original xml.
// Add the new children to the original xml.
if ($presentContent != "")
{
if ($newRoot->hasChildren())
{
$rootChildren =& $newRoot->children();
foreach($rootChildren as $child)
{
$originalRoot->appendChild( $child );
}
}

$contentObjectAttribute->setAttribute("data_text", $originalDomTree->toString());
}
else
{
$contentObjectAttribute->setAttribute("data_text", $newDomTree->toString());
}

Paul Forsyth

Wednesday 19 November 2003 2:09:20 am

ack. wish i could use literal to hide the code from the smileys.

jerry, feel free to email me at paul [at] visionwt [dot] com and ill send you the code is use in a better form.

paul

Jerry Jalava

Wednesday 19 November 2003 6:06:24 am

Hi Paul,

Thank you alot... I haven't tested the script yet, but believe it works like a charm.

I'll try it first from here and will email if it doesn't wan't to work... ;)

Once again thank you alot.

Regards,
Jerry

You must be logged in to post messages in this topic!

36 542 Users on board!

Forums menu