Android Xml解析问题

时间:2013-11-15 07:03:40

标签: android xml-parsing

我正在尝试解析xml并将其值放在两个arraylist中。但是我在粗线

上获得了数组索引超出绑定的异常

我的xml看起来像这样: -

<visitor_info>
<txt_trailer_no_front>23,5</txt_trailer_no_front>
<txt_trailor_no>24,4</txt_trailor_no>
<txt_trailer_no_bol>25,</txt_trailer_no_bol>
</visitor_info>

我的解析代码是:

for(Node n = doc.getFirstChild().getFirstChild().getNextSibling(); n!=null; n = n.getNextSibling().getNextSibling())
    {
        String str=getElementValue(n);

        if(n.getNextSibling()==null)
        {
            Log.i("info",str+"test");
            fillid.add(str.split(",")[0]);
            **fillvalues.add(str.split(",")[1]);**//Exception occurs
            break;
        }


        if(!str.equals("") && !str.equals(null))
        {
        fillid.add(str.split(",")[0]);
        fillvalues.add(str.split(",")[1]!=null?str.split(",")[1]:"");
        }
    }
    Log.i("info",fillvalues.size()+"v");
    for(int i=0 ;i<fillvalues.size();i++)
    {
        Log.i("info","1");
        for(int j=0;j<values.size();j++)
        {
            Log.i("info","2");
            if(values.get(j).equals(fillid.get(i)))
            {
                Log.i("info","3");
                values.get(j).value=fillvalues.get(i);
                break;
            }
        }
    }


}

2 个答案:

答案 0 :(得分:1)

试试这种方式

for(Node n = doc.getFirstChild().getFirstChild().getNextSibling(); n!=null; n = n.getNextSibling().getNextSibling())
        {
            String str=getElementValue(n);

            if(n.getNextSibling()==null)
            {
                Log.i("info",str+"test");
                try {
                    fillid.add(str.split(",")[0]);
                } catch (Exception e) {
                    fillid.add("");
                }
                try {
                    fillvalues.add(str.split(",")[1]);
                } catch (Exception e) {
                    fillvalues.add("");
                }

                break;
            }


            if(!str.equals("") && !str.equals(null))
            {
            fillid.add(str.split(",")[0]);
            fillvalues.add(str.split(",")[1]!=null?str.split(",")[1]:"");
            }
        }

答案 1 :(得分:1)

你在这里array index out of bound exception

<txt_trailer_no_bol>25,</txt_trailer_no_bol>

原因:

如果您使用str拆分它,则str.split(",")只包含一个元素。因此str.split(",")[1] null

您可以使用以下方式:

if(n.getNextSibling()==null)
            {
                Log.i("info",str+"test");

                String[] strarray=str.split(",");
                for(int i=0;i<strarray.length;i++){
                     fillid.add(str.split(",")[i]);
                }
                break;
            }