如何使用 XPath 刪除 SimpleXML 中的父節點?

Linda Hamilton
發布: 2024-10-26 12:56:29
原創
154 人瀏覽過

How to Remove a Parent Node in SimpleXML Using XPath?

SimpleXML - 刪除XPath 節點

問題:

在SimpleXML 中,如何刪除與透過XPath 識別特定元素?

問題描述:

使用以下程式碼尋找並刪除具有特定item_id 的項目失敗:

<code class="php">$xml = simplexml_load_file($filename);
$data = $xml->xpath('//items/info[item_id="' . $item_id . '"]');
$parent = $data[0]->xpath("parent::*");
unset($parent);</code>
登入後複製

unset($parent) 語句不會消除父項

答案:

直接對物件變數(本例為$parent)呼叫unset() 只會刪除物件引用,而不是節點本身。

使用 DOMDocument 的解決方案:

<code class="php">$doc = new DOMDOcument;
$doc->loadxml(...XML string...);
$item_id = 456;

$xpath = new DOMXPath($doc);
foreach($xpath->query('//items[info/item_id="' . $item_id . '"]') as $node) {
  $node->parentNode->removeChild($node);
}</code>
登入後複製

此循環迭代匹配 ;節點,刪除父節點,並更新 $doc 物件。

輸出:

<code class="xml"><?xml version="1.0"?>
<foo>
  <items>
    <info>
      <item_id>123</item_id>
    </info>
  </items>

  <items>
    <info>
      <item_id>789</item_id>
    </info>
  </items>
</foo></code>
登入後複製

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!