robdraw
06-21-2009, 08:57 PM
Hi I am testing a script where I can change an XML files nodes value with PHP, It seems to work except for one issue the text within the node is changed but when I save it back to the file the nodes have dissappered and only the text is present, any ideas where I am going wrong here?
The XML:
<?xml version="1.0" encoding="iso-8859-1"?>
<root>
<home>
<heading>A header</heading>
<content>The content</content>
<image>img/animage.jpg</image>
</home>
</root>
The code
<?php
// Load the XML
$dom = new DomDocument;
$dom->Load('xml01.xml');
// Locate the old parent node
$xpath = new DOMXpath($dom);
$nodelist = $xpath->query('/root/home/content');
$oldnode = $nodelist->item(0);
?>
<?php
// Load the new text string
$modtxt = $_POST['my_text'];
$text = $dom->createTextNode($modtxt);
// Replace
$oldnode->parentNode->replaceChild($text, $oldnode);
// Display
echo $dom->saveXML();
// Now save it to the file,, hmmmm this has a problem the node is changed but it saves new data without the node
print $dom->save("xml01.xml");
?>
New saved XML
<?xml version="1.0" encoding="iso-8859-1"?>
<root>
<home>
<heading>A header</heading>
New Text String
<image>img/animage.jpg</image>
</home>
</root>
Any help would be highly appriciated
Rob
The XML:
<?xml version="1.0" encoding="iso-8859-1"?>
<root>
<home>
<heading>A header</heading>
<content>The content</content>
<image>img/animage.jpg</image>
</home>
</root>
The code
<?php
// Load the XML
$dom = new DomDocument;
$dom->Load('xml01.xml');
// Locate the old parent node
$xpath = new DOMXpath($dom);
$nodelist = $xpath->query('/root/home/content');
$oldnode = $nodelist->item(0);
?>
<?php
// Load the new text string
$modtxt = $_POST['my_text'];
$text = $dom->createTextNode($modtxt);
// Replace
$oldnode->parentNode->replaceChild($text, $oldnode);
// Display
echo $dom->saveXML();
// Now save it to the file,, hmmmm this has a problem the node is changed but it saves new data without the node
print $dom->save("xml01.xml");
?>
New saved XML
<?xml version="1.0" encoding="iso-8859-1"?>
<root>
<home>
<heading>A header</heading>
New Text String
<image>img/animage.jpg</image>
</home>
</root>
Any help would be highly appriciated
Rob