在 SimpleXML 中,访问和修改 XML 文档非常方便。但是,当涉及到删除特定子元素时,可能会出现某些限制。
考虑以下 XML 结构:
<data> <seg>
要删除 id 为“A12”的 seg 元素,请使用SimpleXML,您可以尝试以下代码:
foreach($doc->seg as $seg) { if($seg['id'] == 'A12') { unset($seg); } }
不幸的是,这种方法不会删除所需的元素,因为SimpleXML 的浅修改深度。要真正删除它,请考虑使用以下解决方案:
DOM 扩展提供了另一种修改 XML 文档的方法。通过使用 dom_import_simplexml() 将 SimpleXMLElement 转换为 DOMElement,您可以访问更强大的操作功能。
$data = '<data> <seg>
此代码成功删除了目标 seg 元素,产生以下 XML:
<?xml version="1.0"?> <data><seg>
此外,将 XPath 与 SimpleXML 结合使用提供了一种简洁的方法选择特定节点:
$segs = $doc->xpath('//seg[@id="A12"]'); if (count($segs) >= 1) { $seg = $segs[0]; } // Same deletion procedure as above
以上是如何有效删除 PHP SimpleXML 中具有特定属性的子元素?的详细内容。更多信息请关注PHP中文网其他相关文章!