SimpleXML:删除 XPath 节点
在本文中,我们将探讨如何使用以下方法有效地从 XML 文档中删除父节点: SimpleXML 和 XPath。
了解 SimpleXML限制
提供的代码尝试使用 SimpleXML 在通过 XPath 找到父节点后删除它。然而,SimpleXML 的 unset() 函数仅删除存储在变量中的对象引用,而不是节点本身。
DOMDocument 来拯救
要克服 SimpleXML 的限制,请考虑使用 DOMDocument,它可以更直接地操作 XML 文档的结构。
解决方案使用DOMDocument
示例代码和输出
$doc = new DOMDocument;
$doc->loadXML(...);
$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();
此代码删除 item_id 456 的产品的
结论
DOMDocument 允许对 XML 文档进行更稳健的操作,包括直接删除节点。虽然 SimpleXML 对于基本的 XPath 查询来说很方便,但 DOMDocument 更适合更复杂的 XML 操作任务。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3