Adding Attributes to all XML Nodes

C

cesarcesar

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. Im trying
to use DOM, but it doesn't have to be. I just need it to work.
Code:
<?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*
attributes of the 2nd *child01* node.
Code:
<?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>
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,007
Latest member
obedient dusk

Latest Threads

Top