我有这个小 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
字符串变量,但是何时我可以在我的 logcat 中看到Log.i("MyActivity", name);
该名称,但在我的 logcat 中看不到Log.i("MyActivity", "new");
。所以这意味着 if 子句失败了,但为什么?例如变量name' save the
product`,但是当它与“product”单词进行比较时,它失败了,并且没有输入 if 语句来打印日志。我想知道我是否遗漏了什么或者这里是否存在一些数据类型冲突。