2013-11-15 3 views
0

내가 XML을 구문 분석하고 내가 굵은 선에 바운드 예외 밖으로 배열 인덱스를 얻고있다 나누었다안드로이드 XML을 구문 분석 문제

내 XML은 다음과 같습니다 두 가지의 ArrayList에 값을 넣어 위해 노력하고 있어요 : -

<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; 
      } 
     } 
    } 


} 
+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

당신은 여기 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; 
      }