什么是从xml字符串中删除相同标签的最佳方法?

时间:2014-02-26 13:59:15

标签: java xml string xml-parsing saxparser

在我的Android应用程序中,我正在从主机中获取xml字符串:

 <response>
     <objects>
         <object>
              <id>1</id>
              <name>Black</name>
              <desc>Black color</desc>
         </object>
         <object>
              <id>2</id>
              <name>White</name>
              <desc>White color</desc>
         </object>
         ...
         ...
         <object>
              <id>99</id>
              <name>Green</name>
              <desc>Green color</desc>
         </object>
     </objects>
 </response>

它是一个字符串,我想从字符串中删除所有desc标签。最好和最简单的方法是什么?提前谢谢。

3 个答案:

答案 0 :(得分:2)

“最好,最简单”是一个意见问题。

修改使用JAXP API解析此文档,查找并丢弃这些标记(以及可能是其内容)的许多示例中的一个非常简单,并输出修改后的文档。

编写一个执行此操作的XSLT样式表也非常简单。从“身份转换”开始,然后添加

<xsl:template match="desc"/>

...换句话说,当你到达<desc>元素时,什么都不做,而不是将它复制到输出中。

在这种特殊情况下,“绝望的Perl黑客”方法可行 - 也就是说,您可以简单地将其作为文本文件处理并丢弃/删除包含的行。

答案 1 :(得分:1)

我认为这会奏效。

String modifiedXmlString = xmlString.replaceAll("(?s)<desc>.*?</desc>","");

这使用正则表达式删除所需的xml标记。 您可以在此处详细了解正则表达式 http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html

答案 2 :(得分:0)

据推测,您将XML解析为文档?您可以使用所有节点,比如XPath,然后在每个节点上调用getParentNode().removeChild(node)