この小さなxmlファイルをアプリで読み取り、それぞれproduct
を配列に保存したい:
<?xml version="1.0" encoding="UTF-8"?>
<products>
<product>
<productname>Jeans</productname>
<productcolor>red</productcolor>
<productquantity>5</productquantity>
</product>
<product>
<productname>Tshirt</productname>
<productcolor>blue</productcolor>
<productquantity>3</productquantity>
</product>
<product>
<productname>shorts</productname>
<productcolor>green</productcolor>
<productquantity>4</productquantity>
</product>
</products>
この関数を使用して Android アプリで xml を解析しますが、最後に製品を取得できず、印刷できません:
private void parseXML(XmlPullParser parser) throws XmlPullParserException,IOException
{
ArrayList<product> products = null;
int eventType = parser.getEventType();
product currentProduct = null;
while (eventType != XmlPullParser.END_DOCUMENT){
String name = null;
switch (eventType){
case XmlPullParser.START_DOCUMENT:
products = new ArrayList<product>();
break;
case XmlPullParser.START_TAG:
name = parser.getName();
Log.i("MyActivity", name);
if (name == "product"){
Log.i("MyActivity", "new");
currentProduct = new product();
} else if (currentProduct != null){
if (name == "productname"){
currentProduct.name = parser.nextText();
} else if (name == "productcolor"){
currentProduct.color = parser.nextText();
} else if (name == "productquantity"){
currentProduct.quantity= parser.nextText();
}
}
else
{
Log.i("MyActivity", "old");
}
break;
case XmlPullParser.END_TAG:
name = parser.getName();
if (currentProduct != null){
products.add(currentProduct);
}
}
eventType = parser.next();
}
}
log
この関数で気付いたように、いくつかの行を追加するparser.getName()
と、タグの名前がname
文字列変数に割り当てられていることがわかりましLog.i("MyActivity", name);
たが、logcat で名前を確認できますが、logcat では確認できませんLog.i("MyActivity", "new");
。つまり、if 句が失敗したことを意味しますが、なぜですか? たとえば、変数name' save the
product`ですが、それを「product」単語と比較すると失敗し、ログを出力するifステートメントを入力しません。何か見逃しているかどうか、またはここに dataType の競合があるかどうかを知りたいです。