解析xml时如何在标记内获取文本

时间:2016-03-17 21:09:05

标签: android xml

我从Web服务获取XML文本。我通过获取parser.setInput(con.getInputStream(),null);成功加载了流XmlPullParser对象,其中解析器是我的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>`

我想访问<synonyms>代码中的文字,但不知道该怎么做。这就是我所拥有的:

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();
        }

但上面的代码会在<category>标记和我不想要的<synonyms>内获取文字。我只希望<synonyms>标记中包含的文字。

2 个答案:

答案 0 :(得分: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;
        }
}

答案 1 :(得分:0)

您必须实现SAX XML Parser和Handler。

如果你在谷歌上搜索有数以千计的教程。这是one。并且here在两个不同的SAX实现之间有一个解释:org.xml.saxthe android.sax并通过示例解释这两个实现的概率