获取XML节点位置

时间:2015-01-20 18:53:21

标签: php xml xpath

我有以下XML

    <cds>
        <record>
            <id>1</id>
            <artist>Rammstein</artist>
            <album>random</album>
            <trackNumbers>11</trackNumbers>
        </record>
        <record>
            <id>2</id>
            <artist>Rammstein</artist>
            <album>random</album>
            <trackNumbers>18</trackNumbers>
        </record>
   </cds>

我想删除标识符&#34; ID&#34;我从另一个PHP文件传递。所以,如果我没有错,我需要记录节点的位置来删除该节点。

$xml=simplexml_load_file("books.xml") or die("Error: Cannot create object");

unset($xml->record[x]); // x should be the id passed

这可以实现吗?我一直试图获得这个,但我无法找到解决方案。

1 个答案:

答案 0 :(得分:1)

首先使用<record>选择xpath(),然后将其删除:

$xml = simplexml_load_string($x); // assume XML in $x
$record = $xml->xpath("/cds/record[id='2']")[0];

这将存储该xpath&#34;查询&#34;的第一个结果(index = 0)。在$record。它将是id = 2的记录节点。请注意,需要PHP&gt; = 5.4才能进行数组解除引用。

现在使用未设置:

unset($record[0]);

查看更改:

echo $xml->asXML();