2015-01-20 121 views
1

我有下面的XML获取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> 

我想通过identifiier“ID”,我从另一个PHP文件传递给删除的记录。所以,如果我没有错,我需要记录节点的位置来删除该节点。

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

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

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

回答

1

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

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

这将存储在该$record的xpath “查询” 的第一结果(索引= 0)。它将是一个id = 2的记录节点。请注意,需要PHP> = 5.4来执行数组解引用。

现在使用取消设置:

unset($record[0]); 

看到的变化:

echo $xml->asXML(); 
+0

谢谢你的回答,那帮助我。你能告诉我为什么得到一个downvote? :S – Veslor 2015-01-21 08:06:27

+0

@Veslor downvote:不知道,我也没有看到一个 – michi 2015-01-21 17:16:25