2015-01-20 161 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