0

このxmlを解析して次のタグに移動する方法がわかりません

RSS --> チャンネル --> アイテム

この構造のような xml ツリー、助けてください。前もって感謝します。

xmlファイルのリンク

<rss>
<channel>
    <item>
        <link> </link>
        <title> </title>
    </item>
</channel>

アンドロイド Java コード:

public class RssXmlParser {
private static final String ns = null;
public List<Entry> parse(InputStream in) throws XmlPullParserException, IOException {
    try {
        XmlPullParser parser = Xml.newPullParser();
        parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false);
        parser.setInput(in, null);
        parser.nextTag();
        return readFeed(parser);
    } finally {
        in.close();
    }
}
private List<Entry> readFeed(XmlPullParser parser) throws XmlPullParserException, IOException {
    List<Entry> entries = new ArrayList<Entry>();

    parser.require(XmlPullParser.START_TAG, ns, "channel");

    while (parser.next() != XmlPullParser.END_TAG) {
        if (parser.getEventType() != XmlPullParser.START_TAG) {
            continue;
        }
        String name = parser.getName();
        if (name.equals("item")) {
            entries.add(readEntry(parser));
        } else {
            skip(parser);
        }
    }
    return entries;
}


public static class Entry {
    public final String url;
    public final String title;

    private Entry(String url,String title) {
        this.url = url;
        this.title=title;
    }
}
private Entry readEntry(XmlPullParser parser) throws XmlPullParserException, IOException {
    parser.require(XmlPullParser.START_TAG, ns, "item");
    String title = null;
    String link = null;
    while (parser.next() != XmlPullParser.END_TAG) {
        if (parser.getEventType() != XmlPullParser.START_TAG) {
            continue;
        }
        String name = parser.getName();
        if (name.equals("title")) {
            title = readTitle(parser);
        } else if (name.equals("link")) {
            link = readLink(parser);
        } else {
            skip(parser);
        }
    }
    return new Entry(link,title);
}
private String readTitle(XmlPullParser parser) throws IOException, XmlPullParserException {
    parser.require(XmlPullParser.START_TAG, ns, "title");
    String title = readText(parser);
    parser.require(XmlPullParser.END_TAG, ns, "title");
    return title;
}
private String readLink(XmlPullParser parser) throws IOException, XmlPullParserException {
    String link = "";
    parser.require(XmlPullParser.START_TAG, ns, "link");
    link = readText(parser);
    parser.require(XmlPullParser.END_TAG, ns, "link");
    return link;
}
private String readText(XmlPullParser parser) throws IOException, XmlPullParserException {
    String result = "";
    if (parser.next() == XmlPullParser.TEXT) {
        result = parser.getText();
        parser.nextTag();
    }
    return result;
}

private void skip(XmlPullParser parser) throws XmlPullParserException, IOException {
    if (parser.getEventType() != XmlPullParser.START_TAG) {
        throw new IllegalStateException();
    }
    int depth = 1;
    while (depth != 0) {
        switch (parser.next()) {
            case XmlPullParser.END_TAG:
                depth--;
                break;
            case XmlPullParser.START_TAG:
                depth++;
                break;
        }
    }
}
}

リンクはこちら

4

2 に答える 2

0

この解析では、イベントが終了ドキュメントになるまで解析を繰り返します。イベント タイプが開始タグの場合は、desir タグをチェックします。そのサンプル コードからの値の取得は、what_tagyou_want タグの「名前」属性の値の取得です。

     int event = myparser.getEventType();
     while (event != XmlPullParser.END_DOCUMENT) 
     {
        String name=myparser.getName();

        switch (event)
        {
           case XmlPullParser.START_TAG:

               if(name.equals("What_tagyou_want"))
               {
                     namexml= myparser.getAttributeValue(null,"Name")+" ";//get values from here
                }
                    break;

           case XmlPullParser.END_TAG:

           break;

           default: break;
        }        
        event = myparser.next();                    
     }
于 2016-08-19T11:20:51.463 に答える
0

xml プル解析の完全な例を次に示します。これを試してください。

https://androidgarden.wordpress.com/2016/09/02/android-xml-pull-parsing-from-sd-card-assets/

于 2016-09-16T04:44:56.723 に答える