」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何使用 SimpleXML 和 DOMDocument 刪除 XPath 節點?

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

發佈於2024-11-08
瀏覽:628

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

SimpleXML:刪除XPath 節點

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

了解 SimpleXML限制

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

DOMDocument 來拯救

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

解決方案使用DOMDocument

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

範例程式碼與輸出

$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 的產品的 節點,導致修改後的 XML 文件沒有該節點。

結論

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

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3