首頁  >  文章  >  後端開發  >  如何使用 SimpleXML 和 DOMDocument 刪除 XPath 節點?

如何使用 SimpleXML 和 DOMDocument 刪除 XPath 節點?

Patricia Arquette
Patricia Arquette原創
2024-10-26 21:25:29357瀏覽

How Can I Delete an XPath Node Using SimpleXML and DOMDocument?

SimpleXML:刪除XPath 節點

在本文中,我們將探索如何使用以下方法有效地從父節點SimpleXML和XPath。

了解 SimpleXML 的限制

提供的程式碼嘗試使用 SimpleXML 在透過 XPath 找到父節點後刪除它。但是,SimpleXML 的 unset() 函數僅刪除儲存在變數中的物件引用,而不是節點本身。

DOMDocument 來救援

要克服 SimpleXML 的限制,請考慮使用 DOMDocument,更直接地操作 XML 文件的結構。

使用 DOMDocument 的解決方案

  1. 建立 DOMDocument 物件並將 XML 檔案載入其中。
  2. 使用 XPath 查詢並選擇目標節點。
  3. 使用 $node->parentNode->removeChild($node) 刪除父節點。

範例程式碼與輸出

<code class="php">$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();</code>

此程式碼刪除了 。 item_id 為 456 的產品的節點,導致修改後的 XML 文件沒有該節點。

結論

DOMDocument 允許對 XML 文件進行更穩健的操作,包括直接刪除節點數。雖然 SimpleXML 可以方便地執行基本的 XPath 查詢,但 DOMDocument 更適合更複雜的 XML 操作任務。

以上是如何使用 SimpleXML 和 DOMDocument 刪除 XPath 節點?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn