PHP SimpleXML – 删除xpath节点
发布时间:2020-05-25 09:48:36 所属栏目:PHP 来源:互联网
导读:我有点困惑,我如何可以通过xpath搜索删除我可以找到的东西的父节点: $xml = simplexml_load_file($filename);$data = $xml-xpath(//items/info[item_id= . $item_id . ]);$parent = $data[0]-xpath(parent::*);unset($parent); 所以,它
|
我有点困惑,我如何可以通过xpath搜索删除我可以找到的东西的父节点: $xml = simplexml_load_file($filename);
$data = $xml->xpath('//items/info[item_id="' . $item_id . '"]');
$parent = $data[0]->xpath("parent::*");
unset($parent);
所以,它找到项目ID,没有问题 – 但是未设置不会摆脱这个< items>节点.所有我想要做的是删除< items> …< / items>对于这个产品.显然,有< items> xml文件中的节点,因此它将无法执行unset($xml-> data->项目),因为这将删除所有内容. 任何想法非常感激:-) <?php
$xml = new SimpleXMLElement('<a><b/></a>');
unset($xml->b);
echo $xml->asxml();
因为__unset() method(或模块代码中的等效项)被调用,所以这个工作原理(从文档中删除< b />元素). <?php
$doc = new DOMDOcument;
$doc->loadxml('<foo>
<items>
<info>
<item_id>123</item_id>
</info>
</items>
<items>
<info>
<item_id>456</item_id>
</info>
</items>
<items>
<info>
<item_id>789</item_id>
</info>
</items>
</foo>');
$item_id = 456;
$xpath = new DOMXpath($doc);
foreach($xpath->query('//items[info/item_id="' . $item_id . '"]') as $node) {
$node->parentNode->removeChild($node);
}
echo $doc->savexml();
版画 <?xml version="1.0"?>
<foo>
<items>
<info>
<item_id>123</item_id>
</info>
</items>
<items>
<info>
<item_id>789</item_id>
</info>
</items>
</foo> (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
