【问题标题】:how to get text within tag when parsing xml解析xml时如何获取标签内的文本
【发布时间】:2016-03-17 21:09:05
【问题描述】:

我正在从 Web 服务获取 XML 文本。我已经通过获取parser.setInput(con.getInputStream(),null); 成功加载了流 XmlPullParser 对象,其中 parser 是我的 XmlPullParser 对象,而 con 是我与 URL 的连接。

我正在阅读流,但我不知道如何获取特定部分。这是 XML 文件的样子:

    `<response> 
<list><category>(noun)</category><synonyms>order|war (antonym)</synonyms></list> 
<list><category>(noun)</category><synonyms>harmony|concord|concordance</synonyms></list> 
<list><category>(noun)</category><synonyms>public security|security</synonyms></list> 
<list><category>(noun)</category><synonyms>peace treaty|pacification|treaty|pact|accord</synonyms></list> 
</response>`

我想访问 &lt;synonyms&gt; 标记中的文本,但不知道该怎么做。这就是我所拥有的:

int eventType = parser.getEventType();
        while(eventType != XmlPullParser.END_DOCUMENT){
            String name = parser.getName();
            if(eventType == XmlPullParser.TEXT) {

                stringToBeDisplayed.add(parser.getText()+"\n");
            }
            eventType = parser.next();
        }

但上面的代码在&lt;category&gt; 标记和&lt;synonyms&gt; 中获取了我不想要的文本。我只想要 &lt;synonyms&gt; 标记中包含的文本。

【问题讨论】:

    标签: android xml


    【解决方案1】:

    做这样的事情

    String tagValue = null, tagName = null;
    while (eventType != XmlPullParser.END_DOCUMENT) {
          switch (eventType) {
              case XmlPullParser.TEXT:
                   tagValue = xmlPullParser.getText();
                   break;
              case XmlPullParser.END_TAG:
                   tagName = xmlPullParser.getName();
                   if (tagName != null && tagName.toUpperCase().equals("SYNONYMS")) {
                            // do something with tagValue
                            stringToBeDisplayed.add(tagValue);
                   } 
                   break;
            }
    }
    

    【讨论】:

    • 谢谢。有用。你能在我的代码中告诉我为什么一个空白值进入我的 stringToBeDisplayed 列表,因为我不明白为什么我在之后得到一个空白字符串
    • 顺便说一句,你为什么要这样做 +"\n"?只需执行 stringToBeDisplayed.add(tagValue).. 编辑我的答案。如果您认为可行,请接受。
    • 我在谷歌中搜索过的关于我的问题的最好的一个,tnx。为什么不接受最佳答案?
    【解决方案2】:

    您必须实现一个 SAX XML 解析器和处理程序。

    如果您在 google 上搜索,则有数以千计的教程。这是onehere 有两种不同的 SAX 实现之间的解释:org.xml.saxthe android.sax 并通过示例解释两者的优缺点

    【讨论】:

      猜你喜欢
      • 2012-11-10
      • 2012-01-24
      • 2019-12-06
      • 1970-01-01
      • 1970-01-01
      • 2015-11-29
      • 2016-11-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多