2011-10-23 47 views
0

我正在生成一個XML文件,並希望通過屬性名稱刪除某些孩子。PHP XML DOMDocument通過屬性值刪除子項?

例如: data.xml中

<root> 
<item name="item-1"> 
    <sub1>some text</sub1> 
    <sub2>etc.</sub2> 
</item> 
<item name="item-2"> 
    <sub1>some different text</sub1> 
    <sub2>etc.</sub2> 
</item> 
</root> 

現在我試圖通過屬性名稱中刪除元素。 (即 「項-1」)

那怎麼我的XML文檔,我的元素被設置:

$doc = new DOMDocument('1.0', 'utf-8'); 
$root = $doc->createElement("root"); 
$doc->appendChild($root); 

// Foreach... { 

$item = $doc->createElement("item"); 
$item->setAttributeNode(new DOMAttr('name', 'item-'.$i)); 
$root->appendChild($item); 

} 

$doc->save("Data.xml") 

我很想有這樣的:$ doc-> removeElementByAttributeValue( 「項目1」 ),但我找不到竅門:-(

回答

1

使用XPath來查找節點:

//item[@name='item-1'] 

which'll返回精確匹配節點,你可以再通入removeChild之召喚

+0

嘿馬克,我試過'$ xpath = new DOMXPath($ doc); $ query ='// item [@ name =「item-1」]'; $ emps = $ xpath-> query($ query); \t print_r($ emps);'但它不會顯示除DOMNodeList Object()以外的任何內容。它是如何工作的? – Mike

+0

得到它的感謝! – Mike