2013-02-27 71 views
0

我找到很好的例子,如何解析XML中android.com。这里是的Android XmlPullParser错误

http://developer.android.com/training/basics/network-ops/xml.html

private String readLink(XmlPullParser parser) throws IOException, XmlPullParserException  { 
    String link = ""; 
    parser.require(XmlPullParser.START_TAG, ns, "link"); 
    String tag = parser.getName(); 
    String relType = parser.getAttributeValue(null, "rel"); 
    if (tag.equals("link")) { 
     if (relType.equals("alternate")) { 
      link = parser.getAttributeValue(null, "href"); 
      parser.nextTag(); 
     } 
    } 
    parser.require(XmlPullParser.END_TAG, ns, "link"); 
    return link; 
} 

时,有一个单独的标签只有一个链接标签,可以正确地解析部分。但是,如果单个标签中有这么多的LINK,它会输出错误。

请让我知道如何解决这个编码在一个单一的代码来解析多个链接标记。

+0

请登录后究竟是什么差错来了。 – 2013-02-27 06:08:18

+0

...以及要解析 – Henry 2013-02-27 06:09:10

回答

0

我不知道为什么你所得到的错误,除非你告诉我们什么错误的,但至于检查标签去,你需要用一个while循环修复:

parser.require(XmlPullParser.START_TAG, ns, "NameOfParentTag"); //Tag name which "link" tags are embedded in 
String link = ""; 
while (parser.next() != XmlPullParser.END_TAG) { 
    if (parser.getEventType() != XmlPullParser.START_TAG) { 
     continue; 
    } 
    String tag = parser.getName(); 
    String relType = parser.getAttributeValue(null, "rel"); 
    if (tag.equals("link")) { 
     if (relType.equals("alternate")) { 
      link = parser.getAttributeValue(null, "href"); 
      //Break here if you are done looking for what you need 
     } 
    } 
} 
return link; 

如果您还提供了一个您想要解析的示例XML,这将会很有帮助。

+0

正确的示例输入。有用。忘记考虑使用“休息”。 – ppshein 2013-02-27 06:28:59

-1

使用documentparser代替xmlpullparser.u了在声明parser.nexttag一个错误()。使用parser.next(),它会检查下一个环节的价值。

0

你需要移动parser.nextTag()片断到外if语句是这样的:

if (tag.equals("link")) { 
    if (relType.equals("alternate")) { 
     link = parser.getAttributeValue(null, "href"); 
    } 

    parser.nextTag(); 
} 
parser.require(XmlPullParser.END_TAG, ns, "link"); 
return link;