【问题标题】:How to delete a element by tag name with all elements inside it如何按标签名称删除一个元素,其中包含所有元素
【发布时间】:2012-09-29 19:55:44
【问题描述】:

我想使用 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 上找不到它。

【问题讨论】:

标签: php xml removeclass


【解决方案1】:
$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);
}

【讨论】:

    【解决方案2】:

    您可以使用 XPath 并通过 XPath 删除节点。

    Use DOM and XPath to remove a node from a sitemap file

    PHP SimpleXML - Remove xpath node

    Stackoverflow 上有很多帖子。也许你应该先在这里搜索。

    【讨论】:

      猜你喜欢
      • 2018-02-08
      • 1970-01-01
      • 2013-11-26
      • 1970-01-01
      • 2021-11-24
      • 1970-01-01
      • 2013-04-18
      • 2022-01-21
      相关资源
      最近更新 更多