0

我找到了如何在 android.com 中解析 XML 的好例子。这是一部分

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 标签时,它可以正确解析。但是当单个标签中有这么多LINK时会输出错误。

请让我知道如何修复此编码以在一个标签中解析多个 LINK 标签。

4

3 回答 3

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,那将会很有帮助。

于 2013-02-27T06:09:58.127 回答
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;
于 2013-11-20T15:58:45.703 回答
-1

使用 documentparser 而不是 xmlpullparser.u 在语句 parser.nexttag() 处出错。使用 parser.next() 将检查下一个链接值。

于 2013-02-27T06:17:17.300 回答