cesarcesar Posted January 18, 2008 Share Posted January 18, 2008 Howdy, I have an PHP page that edits XML files. I want ADD a new *id* attribute to all nodes on the page that do not have it all ready. Then i want to delete all of the values of *id* and set them as an incremental 1-x values down the page. This is the current code i am using to edit specific nodes. <?php $content = $_POST['content']; $id = $_POST['id']; $node = $_POST['node']; $explode = explode("_",$node); $dom=new DOMDocument(); $dom->load('sample.xml'); $dom->formatOutput = true; //echo $dom->saveXML(); // show before file $allnodes = $dom->getElementsByTagName($explode[0]); foreach ($allnodes as $nodes) { if ($nodes->nodeName==$explode[0] and $nodes->getAttribute('id')==$id) { // $nodes->setAttribute($explode[1],$content); } } $dom->save('sample.xml'); ?> This is the XML file im working with. NOTE the missing *id* node of the 2nd *child01* node. <?xml version="1.0" encoding="utf-8"?> <parent option01="other info" option02="other info" id="1"> <child01 option01="child01 option01" option02="child01 option02" id="2"> <child02 option01="child02 option01" option02="child02 option02" id="3"> <text option01="text option01" option02="text option02" id="4"> <![CDATA[<b>Ma quande lingues coalesce</b>]]> </text> <image option01="Li Europan lingues 01" option02="Li Europan lingues 02" id="5">image 1</image> <image option01="Li Europan lingues 01" option02="Li Europan lingues 02" id="6">image 2</image> </child02> <child02 option01="child02 option01" option02="child02 option02" id="7"> <text option01="text option01" option02="text option02" id="8"> <![CDATA[Lorem ipsum dolor sit amet.]]> </text> <image option01="Li Europan lingues 01" option02="Li Europan lingues 02" id="9">image 1</image> <image option01="Li Europan lingues 01" option02="Li Europan lingues 02" id="10">image 2</image> </child02> </child01> <child01 option01="child01 option01" option02="child01 option02"> <child02 option01="child02 option01" option02="child02 option02"> <text option01="text option01" option02="text option02"> <![CDATA[Epsum factorial non deposit quid pro quo hic escorol.]]> </text> <image option01="Li Europan lingues 01" option02="Li Europan lingues 02">image 1</image> <image option01="Li Europan lingues 01" option02="Li Europan lingues 02">image 2</image> </child02> <child02 option01="child02 option01" option02="child02 option02"> <text option01="text option01" option02="text option02"> <![CDATA[Li Europan lingues es membres del sam familie.]]> </text> <image option01="Li Europan lingues 01" option02="Li Europan lingues 02">image 1</image> <image option01="Li Europan lingues 01" option02="Li Europan lingues 02">image 2</image> </child02> </child01> </parent> Link to comment https://forums.phpfreaks.com/topic/86690-adding-attributes-to-all-xml-nodes/ Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.