如何刪除 SimpleXML 中的 XPath 節點而不遺失整個結構?

Susan Sarandon
發布: 2024-10-26 00:21:02
原創
509 人瀏覽過

How to Remove an XPath Node in SimpleXML Without Losing the Entire Structure?

如何使用 SimpleXML 刪除 XPath 節點

使用 XPath 查詢尋找和刪除 XML 節點在 SimpleXML 中可能是一個挑戰。本文解決了刪除透過 XPath 搜尋識別的父節點的問題。

考慮以下範例:

<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 中的物件的參考。

解決方案是恢復使用 DOMDocument 來完成此任務:

<code class="php">$doc = new DOMDocument;
$doc->loadxml('<foo>
  <items>
    <info>
      <item_id>123</item_id>
    </info>
  </items>
  <items>
    <info>
      <item_id>456</item_id>
    </info>
  </items>
  <items>
    <info>
      <item_id>789</item_id>
    </info>
  </items>
</foo>');
$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>
登入後複製

此程式碼將刪除 包含指定 的節點來自 XML 文件。它使用removeChild()方法從其父節點中刪除節點。

以上是如何刪除 SimpleXML 中的 XPath 節點而不遺失整個結構?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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