【问题标题】:PHP XML DOMDocument Remove Child by Attribute Value?PHP XML DOMDocument 按属性值删除子级?
【发布时间】:2016-06-24 18:16:52
【问题描述】:

我正在动态生成一个 XML 文件,并希望通过属性名称删除某些子项。

例如: 数据.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>

现在我正在尝试通过属性名称删除一个元素。 (即“item-1”)

这就是我的 XML Doc 和元素的设置方式:

$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("item-1"),但我找不到诀窍:-(

【问题讨论】:

    标签: xml domdocument


    【解决方案1】:

    使用xpath查找节点:

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

    这将返回完全匹配的节点,然后您可以将其传递给 removeChild 调用

    【讨论】:

    • 嗨,Marc,我试过 $xpath = new DOMXPath($doc); $query = '//item[@name="item-1"]'; $emps = $xpath-&gt;query($query); print_r($emps);,但除了 DOMNodeList 对象 ( ) 之外什么都没有显示。它应该是这样工作的吗?
    猜你喜欢
    • 1970-01-01
    • 2022-01-03
    • 2014-04-06
    • 1970-01-01
    • 1970-01-01
    • 2016-11-13
    • 1970-01-01
    • 1970-01-01
    • 2013-05-14
    相关资源
    最近更新 更多