0

我有这个小 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 theproduct`,但是当它与“product”单词进行比较时,它失败了,并且没有输入 if 语句来打印日志。我想知道我是否遗漏了什么或者这里是否存在一些数据类型冲突。

4

1 回答 1

0

使用你应该使用的字符串.equals

if(name.equals("product")){

==总是只比较两个引用(即对于非原始对象)——即它测试两个操作数是否引用同一个对象。

但是,该equals方法可以被覆盖——所以两个不同的对象仍然可以相等......

和剩下的一样

 if(name.equals("productname"))  

 else if (name.equals("productcolor"))

 else if (name.equals("productquantity"))
于 2014-09-13T12:03:18.467 回答