我有这个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冲突。
答案 0 :(得分:0)
使用字符串,您应该使用.equals
if(name.equals("product")){
==
总是只比较两个引用(对于非基元,即),即它测试两个操作数是否引用同一个对象。
但是,可以覆盖equals
方法 - 因此两个不同的对象仍然可以相等......
与剩下的一样
if(name.equals("productname"))
else if (name.equals("productcolor"))
else if (name.equals("productquantity"))