【问题标题】:Whats the best way to remove same tags from an xml string?从 xml 字符串中删除相同标签的最佳方法是什么?
【发布时间】:2014-03-29 09:54:09
【问题描述】:

在我的 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 标记。最好和最简单的方法是什么?提前致谢。

【问题讨论】:

    标签: java xml string xml-parsing saxparser


    【解决方案1】:

    “最佳和最简单”是一个意见问题。

    修改使用 JAXP API 解析此文档的众多示例中的一个,查找并丢弃这些标签(可能还有它们的内容),然后输出修改后的文档是非常简单的。

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

    <xsl:template match="desc"/>
    

    ...换句话说,当您到达&lt;desc&gt; 元素时,除了将其复制到输出之外什么都不做。

    在这种特殊情况下,“Desperate Perl Hacker”方法会起作用——也就是说,您可以简单地将其作为文本文件处理并丢弃/删除包含 .

    的行

    【讨论】:

      【解决方案2】:

      我认为这会奏效。

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

      这使用正则表达式来删除你想要的 xml 标签。 您可以在此处阅读有关正则表达式的更多信息 http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html

      【讨论】:

        【解决方案3】:

        大概您已将 XML 解析为文档?您可以使用 XPath 获取所有节点,然后在每个节点上调用 getParentNode().removeChild(node)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-01-11
          • 2011-05-31
          • 2011-10-03
          • 2016-08-11
          • 1970-01-01
          • 2015-01-31
          • 2023-03-25
          • 2019-03-27
          相关资源
          最近更新 更多