0

php で dom removeChild 関数を使用して、タグ間のすべてを削除したいと考えています。

私のxmlは次のようになります

<root>
  <element>text</element>

  <remove>
    text
    <morexml>text</morexml>
  </remove>
</root>

ここで、タグ全体を含めてタグを削除したいと思います。どうすればいいですか?手がかりがありません。私が見つけた唯一のdom関数を使用しようとしています:removeChild.

削除すると、次のようになります。

 <root>
      <element>text</element>

 </root>

これを行うphp dom関数はありますか? Googleやstackoverflowで見つけることができません。

4

2 に答える 2

2
$dom = new DOMDocument;
$dom->loadXML($xml);
$dom->getElementsByTagName('root')->item(0)
   ->removeChild($dom->getElementsByTagName('remove')->item(0));

ただし、これは非常に具体的です。より一般性が必要な場合は、XPath を使用できます。

foreach ($xpath->query('//remove') as $node) {
   $node->parentNode->removeChild($node);
}
于 2012-10-09T13:26:47.490 に答える
1

XPath を使用して、XPath 経由でノードを削除できます。

DOM と XPath を使用してサイトマップ ファイルからノードを削除する

PHP SimpleXML - xpath ノードの削除

ここStackoverflowにはたくさんの投稿があります。まずはここで検索してみるといいかもしれません。

于 2012-10-09T13:13:38.793 に答える