1

私は自分の XML ファイルを解析したかったので、単純なパーサーをインターネットからダウンロードしました。

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 が次の要素を表示するように、パーサーが次の要素を文字列に書き込むにはどうすればよいですか?

ありがとう

4

1 に答える 1

1

xml ファイルに 1000 個の要素がある場合はどうなるでしょうか。そんなに多くのビューを持つレイアウトを作成しますか?

article 要素を表すレイアウト ファイルを作成し、xml の読み取り中に、xml データからレイアウトを初期化し、アクティビティ ビューに展開する必要があります。

これは LayoutInflater です: http://developer.android.com/reference/android/view/LayoutInflater.html

例: 1 つのビューをレイアウトで膨らませる方法

于 2012-09-20T18:21:22.133 に答える