How to make xml data in module?

Author Message

Jerry Jalava

Tuesday 18 November 2003 8:38:03 pm

Hi again,

I'm building an import script from AM to eZ and I would like to know how can I insert text data to xml datatype field inside own module?
And also would like to know how to do the same thing with ezauthor datatype.

I've founded how to insert data to normal textfield datatype:
$contentObjectAttributes[0]->setAttribute( 'data_text', $title );
$contentObjectAttributes[0]->store();

But know I could use some help with the xml data...

Thanks again,
Jerry

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

Powered by eZ Publish™ CMS Open Source Web Content Management. Copyright © 1999-2014 eZ Systems AS (except where otherwise noted). All rights reserved.

eZ debug

Timing: Jan 31 2025 01:14:26
Script start
Timing: Jan 31 2025 01:14:26
Module start 'layout'
Timing: Jan 31 2025 01:14:26
Module start 'content'
Timing: Jan 31 2025 01:14:26
Module end 'content'
Timing: Jan 31 2025 01:14:26
Script end

Main resources:

Total runtime0.0317 sec
Peak memory usage4,096.0000 KB
Database Queries3

Timing points:

CheckpointStart (sec)Duration (sec)Memory at start (KB)Memory used (KB)
Script start 0.00000.0082 588.1328151.2109
Module start 'layout' 0.00820.0056 739.3438220.6875
Module start 'content' 0.01380.0162 960.03131,001.6797
Module end 'content' 0.03000.0017 1,961.710933.9922
Script end 0.0317  1,995.7031 

Time accumulators:

 Accumulator Duration (sec) Duration (%) Count Average (sec)
Ini load
Load cache0.00319.6989140.0002
Check MTime0.00113.5782140.0001
Mysql Total
Database connection0.00123.802210.0012
Mysqli_queries0.004514.037730.0015
Looping result0.00000.060110.0000
Template Total0.00123.810.0012
Template load0.00092.828110.0009
Template processing0.00030.961210.0003
Override
Cache load0.00061.781210.0006
General
dbfile0.00247.606680.0003
String conversion0.00000.031640.0000
Note: percentages do not add up to 100% because some accumulators overlap

Templates used to render the page:

UsageRequested templateTemplateTemplate loadedEditOverride
1print_pagelayout.tpl<No override>extension/community/design/community/templates/print_pagelayout.tplEdit templateOverride template
 Number of times templates used: 1
 Number of unique templates used: 1

Time used to render debug report: 0.0001 secs