簡體   English   中英

XML解析:如何將XML文件中的下一個元素放入字符串中? (Java / Android)

[英]XML-Parsing: How put next Elements from XML-File into String? (Java / Android)

我想解析自己的XML文件,因此我從Internet下載了一個簡單的Parser。

public class ParsingXML extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // setContentView(R.layout.main);
    setContentView(R.layout.relativelayout);
    TextView journal = (TextView) findViewById(R.id.journal);
    TextView publisher = (TextView) findViewById(R.id.publisher);
    TextView edition1 = (TextView) findViewById(R.id.edition1);
    TextView title1 = (TextView) findViewById(R.id.title1);
    TextView author1 = (TextView) findViewById(R.id.author1);

    TextView edition2 = (TextView) findViewById(R.id.edition2);
    TextView title2 = (TextView) findViewById(R.id.title2);
    TextView author2 = (TextView) findViewById(R.id.author2);

    try {
        XmlResourceParser xpp = getResources().getXml(R.xml.catalog);

        xpp.next();
        int eventType = xpp.getEventType();
        int iter = 0;
        String elemtext = null;

        while (eventType != XmlPullParser.END_DOCUMENT) {

            if (eventType == XmlPullParser.START_TAG) {

                String elemName = xpp.getName();
                if (elemName.equals("catalog")) {
                    String journalAttr = xpp.getAttributeValue(null,
                            "journal");
                    String publisherAttr = xpp.getAttributeValue(null,
                            "publisher");
                    journal.setText(journalAttr);
                    publisher.setText(publisherAttr);
                }
                if (elemName.equals("article")) {
                    iter = iter + 1;
                }

                if (elemName.equals("edition")) {
                    elemtext = "edition";
                }
                if (elemName.equals("title")) {
                    elemtext = "title";
                }
                if (elemName.equals("author")) {
                    elemtext = "author";
                }
            }

            else if (eventType == XmlPullParser.TEXT) {
                if (iter == 1) {
                    if (elemtext.equals("edition")) {
                        edition1.setText(xpp.getText());
                    } else if (elemtext.equals("title")) {
                        title1.setText(xpp.getText());
                    } else if (elemtext.equals("author")) {
                        author1.setText(xpp.getText());
                    }
                }

                else if (iter == 2) {
                    if (elemtext.equals("edition")) {
                        edition2.setText(xpp.getText());
                    } else if (elemtext.equals("title")) {
                        title2.setText(xpp.getText());
                    } else if (elemtext.equals("author")) {
                        author2.setText(xpp.getText());
                    }

                }
            }
            eventType = xpp.next();
        }

    } catch (XmlPullParserException e) {
    } catch (IOException e) {
    }

}
}









<?xml version = '1.0' encoding = 'UTF-8'?>
<catalog journal="sample journal" publisher="sample journal">
<article>
    <edition>EDITION 1</edition>
    <title>TITLE 1</title>
    <author>AUTHOR 1</author>
</article>
<article>
    <edition>EDITION 2</edition>
    <title>TITLE 2</title>
    <author>AUTHOR 2</author>
</article><article>
    <edition>EDITION 3</edition>
    <title>TITLE 3</title>
    <author>AUTHOR 3</author>
</article><article>
    <edition>EDITION 4</edition>
    <title>TITLE 4</title>
    <author>AUTHOR 4</author>
</article><article>
    <edition>EDITION 5</edition>
    <title>TITLE 5</title>
    <author>AUTHOR 5</author>
</article>
</catalog>

問題:每個元素都有一些2個TextView,但是我的XML文件包含更多的元素。 解析器如何將下一個元素寫入字符串,以便TextView顯示下一個元素?

謝謝

如果您的xml文件中有1000個元素,該怎么辦? 您會創建一個具有這么多視圖的布局嗎?

您應該創建一個表示article元素的布局文件,並在讀取xml時,從xml數據初始化布局並將其充氣到活動視圖中。

這是LayoutInflater: http : //developer.android.com/reference/android/view/LayoutInflater.html

示例: 如何使用布局使一個視圖膨脹

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM