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