PHP:查找XML节点并插入子节点

时间:2010-01-21 06:45:32

标签: php xml domdocument

我有一个xml文档,其结构如下:

<?xml version="1.0" encoding="UTF-8"?>
<items>
  <item>
    <id>1</id>
    <url>www.test.com</url>
  </item>
  <item>
    <id>2</id>
    <url>www.test2.com</url>
  </item>
</items>

我希望能够搜索节点值,例如id字段的值为1。然后,一旦找到该节点,选择父节点,该节点将是&lt; item&gt;并在其中插入一个新的孩子。

我知道使用dom文档的概念,但不知道如何在这个实例中这样做。

2 个答案:

答案 0 :(得分:4)

这应该是一个开始:

$dom = new DOMDocument;
$dom->loadXML($input);
$ids = $dom->getElementsByTagName('id');
foreach ($ids as $id) {
  if ($id->nodeValue == '1') {
    $child = $dom->createElement('tagname');
    $child->appendChild($dom->createTextNode('some text'));
    $id->parentNode->appendChild($child);
  }
}
$xml = $dom->saveXML();

或接近它的东西。

答案 1 :(得分:2)

你可以用更简单的方式做同样的事情。您可以反转关系并查找具有值为{{1}的<id/>子节点的任何节点,而不是查找值为1的{​​{1}}节点,然后选择其父节点。 }。

您可以在XPath中轻松完成此操作,以下是如何在SimpleXML中执行此操作:

<id/>