在某个节点的xml中添加数据

时间:2012-06-12 11:52:38

标签: php xml

我有一个嵌套的xml文件,我想在某些节点下插入元素。 xml结构如下:

<root>
    <item id="1">
        <content><name>ITEM 1</name></content>
        <item id="3">
            <content><name>ITEM 3</name></content>
            <item id="4">
                <content><name>ITEM 4</name></content>
            </item>
        </item>
    </item>
    <item id="2">
        <content><name>ITEM TWO</name></content>
    </item>
</root>

假设我想将一些Item作为item id 4的子元素插入,使用php语法将找到第4项的节点并在其中附加另一个项目节点?

1 个答案:

答案 0 :(得分:3)

首先使用simplexml,然后使用xpath搜索ID,然后添加子项:

$xml = '<root>
    <item id="1">
        <content><name>ITEM 1</name></content>
        <item id="3">
            <content><name>ITEM 3</name></content>
            <item id="4">
                <content><name>ITEM 4</name></content>
            </item>
        </item>
    </item>
    <item id="2">
        <content><name>ITEM TWO</name></content>
    </item>
</root>';

$xml = simplexml_load_string($xml); // load the XML

$id = $xml->xpath("//*[@id='4']"); // search for id=4

$item = $id[0]->addChild('item'); // add another item
$item->addAttribute('id', '5'); // add id=5
$content = $item->addChild('content', ''); // add content
$content->addChild('name', 'ITEM 5'); // add name

echo $xml->asXML(); // output