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

1 つのタグに LINK タグが 1 つしかない場合でも、正しく解析できます。ただし、1 つのタグに LINK が多すぎるとエラーが出力されます。

このコーディングを修正して、1 つのタグで複数の 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

xmlpullparser の代わりに documentparser を使用してください。 次のリンク値をチェックするステートメント parser.nexttag().use parser.next() で間違いがありました。

于 2013-02-27T06:17:17.300 に答える