Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.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 基于子值删除父xml标记_Php_Xml_Parsing - Fatal编程技术网

Php 基于子值删除父xml标记

Php 基于子值删除父xml标记,php,xml,parsing,Php,Xml,Parsing,例如,我们有以下格式的xml文件: <A> <B> <C></C> <D></D> <D></D> </B> </A> 我需要: 如果所有的“D”-标记元素都是空的,那么我们需要删除整个“A”-标记元素 当然,我们需要对xml中的所有“A”标记执行此操作。使用此算法: 找到所

例如,我们有以下格式的xml文件:

<A>
      <B>
            <C></C>
            <D></D>
            <D></D>
      </B>
</A>

我需要: 如果所有的“D”-标记元素都是空的,那么我们需要删除整个“A”-标记元素

当然,我们需要对xml中的所有“A”标记执行此操作。

使用此算法:

  • 找到所有的B元素
  • 对于每个B元素,查找所有D元素
  • 对于每个D元素,检查它是否为空
  • 如果所有D元素都为空,则获取B的父元素并将其从树中删除
要使用DOM扩展执行此操作,请参见:

  • 或(不太严格)
使用此算法:

  • 找到所有的B元素
  • 对于每个B元素,查找所有D元素
  • 对于每个D元素,检查它是否为空
  • 如果所有D元素都为空,则获取B的父元素并将其从树中删除
要使用DOM扩展执行此操作,请参见:

  • 或(不太严格)

您使用的是什么xml解析器?你想要什么样的输出?我们需要更多来回答这个问题。输出-相同的xml格式字符串,没有“A”-标记,包括空的“D”-标记。对于解析,我通常使用DomDocument。您使用的是什么xml解析器?你想要什么样的输出?我们需要更多来回答这个问题。输出-相同的xml格式字符串,没有“A”-标记,包括空的“D”-标记。对于解析,我通常使用DomDocument。谢谢您的回答!但最好的答案只是一个代码示例;)@cru3l:仅供参考,当在问题中提供代码片段时,答案中提供的代码片段更可能出现。感谢您的精彩回答!但最好的答案只是一个代码示例;)@cru3l:仅供参考,当在问题中提供代码片段时,答案中提供的代码片段更有可能出现。