【问题标题】:How to scrape strings inside given tags?如何抓取给定标签内的字符串?
【发布时间】:2012-03-15 11:20:19
【问题描述】:

我有一个 XML 读入单个 String。我需要获取<code> 标签内的所有数据。我不需要通过整个 XML 文件来解析它们。我可以使用简单的字符串处理技术来获取这些标签内的数据吗?

input : <a><b><code>Hello</code></b><code>World</code></a>

output : Hello, World

【问题讨论】:

  • 如果该语法始终相同或非常规则,您可能可以使用正则表达式。但是如果你使用一些真正的 XML 处理,比如jondev.net/articles/Android_XML_SAX_Parser_Example,它会更安全
  • 你能建议如何为上面创建一个正则表达式吗?以及如何称呼它?谢谢
  • 见这里 stackoverflow.com/questions/335250/… "&lt;code&gt;(.*?)&lt;/code&gt;" 将匹配您的代码标签,matcher.group(1) 将包含文本。但请注意,如果 xml 可能类似于 &lt; code attribute="something"&gt; 或可以包含 &lt;code&gt;&lt;code&gt; 等内的其他标签,这将不起作用(或需要更复杂的正则表达式)。 XML 不是常规语言,所以有是用正则表达式无法完成的情况。

标签: java android xml string


【解决方案1】:

正则表达式不是一个使用 XML 的可取工具,特别是当有许多复杂的解析器时。您可以使用javax.xml.xpath 包为您做这些事情:

    XPath xp = XPathFactory.newInstance().newXPath();
    NodeList nl =  (NodeList)xp.evaluate("//code", new InputSource(new StringReader("<a><b><code>Hello</code></b><code>World</code></a>")), XPathConstants.NODESET);
    for(int i=0; i< nl.getLength(); i++){
        System.out.print(nl.item(i).getTextContent()+", ");
    }

结果

Hello, World, 

【讨论】:

    【解决方案2】:

    按照here的例子:很简单。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-17
      • 1970-01-01
      • 1970-01-01
      • 2010-09-07
      • 2019-07-19
      • 2020-04-29
      • 2017-02-02
      相关资源
      最近更新 更多