Jump to content

Adding Attributes to all XML nodes


cesarcesar

Recommended Posts

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

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.