Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何按标记名删除包含所有元素的元素_Php_Xml_Removeclass - Fatal编程技术网

Php 如何按标记名删除包含所有元素的元素

Php 如何按标记名删除包含所有元素的元素,php,xml,removeclass,Php,Xml,Removeclass,我想在php中使用dom removeChild函数删除标记之间的所有内容 我的xml看起来像 <root> <element>text</element> <remove> text <morexml>text</morexml> </remove> </root> 文本 文本 文本 现在我想删除标签,包括它的整个内部。我该怎么做?我一点也不知道。我正在尝试使用我

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

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

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

$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);
}

你可以试着用正则表达式。以下链接可能对您有所帮助: