首页  >  文章  >  后端开发  >  如何在 PHP 中使用 SimpleXML 和 DOMDocument 从 XML 文档中删除节点?

如何在 PHP 中使用 SimpleXML 和 DOMDocument 从 XML 文档中删除节点?

Susan Sarandon
Susan Sarandon原创
2024-10-31 06:15:38986浏览

How do I delete nodes from an XML document using SimpleXML and DOMDocument in PHP?

删除 SimpleXML 中的节点

查询 XPath 节点

使用以下命令删除 SimpleXML 中的节点XPath,按照以下步骤操作:

  1. 将 XML 文档加载到 SimpleXMLElement 对象中。
  2. 使用 xpath() 方法搜索所需的节点。
  3. 存储变量中的结果,例如 $data。

节点删除

要删除所选节点的父节点,不能使用 unset($父)。相反,您需要使用 __unset() 方法或恢复为 DOMDocument。

使用 __unset()

当您尝试取消设置时,会调用 __unset() 方法对象的属性。要使用 __unset() 删除节点,请创建一个新的 SimpleXMLElement 对象并取消设置所需的节点,如下所示:

<code class="php">$newNode = new SimpleXMLElement('<a><b></b></a>');
unset($newNode->b);
echo $newNode->asxml(); // Prints <a></a></code>

使用 DOMDocument

DOMDocument 提供更多对 XML 操作的详细控制。使用 DOMDocument 删除节点:

  1. 创建一个新的 DOMDocument 对象并加载 XML 文档。
  2. 使用 xpath() 方法搜索所需的节点。
  3. 使用parentNode->removeChild($node)删除节点。

以 DOMDocument 为例

<code class="php">$doc = new DOMDocument;
$doc->loadxml('<foo><items><info><item_id>123</item_id></info></items></foo>');
$item_id = 123;

$xpath = new DOMXpath($doc);
foreach ($xpath->query('//items[info/item_id="' . $item_id . '"]') as $node) {
  $node->parentNode->removeChild($node);
}
echo $doc->savexml(); // Prints <foo><items><info><item_id>123</item_id></info></items></foo></code>

通过使用这些技术,您可以使用 SimpleXML 和 DOMDocument 有效地从 XML 文档中删除节点。

以上是如何在 PHP 中使用 SimpleXML 和 DOMDocument 从 XML 文档中删除节点?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn