0

我正在尝试解析 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;
            }
        }
    }


}
4

2 回答 2

1

array index out of bound exception来了:

<txt_trailer_no_bol>25,</txt_trailer_no_bol>

原因 :

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

您可以使用以下方式:

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;
            }
于 2013-11-15T07:11:24.820 回答
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]:"");
            }
        }
于 2013-11-15T07:09:45.680 回答