2014-04-24 3 views
0

XML을 arraylist로 가져 오는 데 도움을 찾고 있습니다. 여기 XML을 Stringarray로 구문 분석

은 XML입니다 :

<campagne> 
    <sms><texte> 
      Vente a Drouot 
    </texte> 
    <list> 
    <id> 1 </id> 
     <nom> TOTO </nom> 
    <id> 2 </id> 
     <nom> TATA </nom> 
    <id> 3 </id> 
     <nom> Mr.Gerard </nom> 
    </list> 
</sms> 
</campagne> 

난에 TOTO, TATA, Mr.Gerard을하려는은 StringArray [] 정확히 내가 수동으로 넣을 경우 같은 : 문자열 [] 고객 = { "TOTO", "

public void parseXMLAndStoreIt(XmlPullParser myParser) { 
     int event; 
     String text = null; 
ArrayList<Client> clientslist = null; 

     try { 
      event = myParser.getEventType(); 
      while (event != XmlPullParser.END_DOCUMENT) { 
       String name = myParser.getName(); 

       switch (event) { 
       case XmlPullParser.START_TAG: 
        break; 
       case XmlPullParser.TEXT: 
        text = myParser.getText(); 
        break; 

       case XmlPullParser.END_TAG: 
        if (name.equals("texte")) 
         message = text.trim(); 

        else if (name.equals("nom")) 
         clientslist = text.trim(); // error is here 

        else 

        break; 
       } 
       event = myParser.next(); 

      } 
      parsingComplete = false; 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

    } 

: 를, TATA는 ","Mr.Gerard "(전에"나는이 배열의 차이 이름을 넣을 ArrayList를 clientslist = NULL}

지금 내 XMlPullParser을 위해 내가 쓴 ") 와 난 단지 Mr.Gerard 한이 코드 ... 내가 clients 가정

답변

1

String입니다 - 그럼 당신은 String 배열을 얻을 수 clients.toArray(new String[clients.size()])를 호출 할 수 있습니다 그것은 대신 List<String>해야하며 clients = text.trim();clients.add(text.trim());

로 대체해야 원했어.

+0

내가 \t ArrayList에 넣어했다 깜빡 죄송 clientslist = NULL; 전체 코드 전 게시, 그래서 클라이언트 (배열) 클라이언트를 대체하고 오류 문자열을 변경해야합니다. – Nemka

+0

Ok. 'clients = text.trim();을'clientslist.add (new Client (text.trim()));로 대체하여 clientslist를 채 웁니다. 그런 다음'clientslist'에서'List'로 읽거나'clientslist.toArray (new Client [clientslist.size()])'를 통해 값의 배열을 얻을 수 있습니다. – mvmn

+1

P. 그리고 null로 초기화하지 마십시오. 'List clientslist = new ArrayList ();을 대신 사용하십시오. – mvmn

1

clients 멤버 변수 란 무엇입니까? 코드의 나머지 부분을 보지 않고는 마지막 요소 인 <nom> 요소를 단순히 덮어 쓰는 것처럼 보입니다.

목록을 사용하고 각각 <nom>을 추가 한 다음 목록을 문자열 배열로 변환하십시오.

0

문자열 배열의 인덱스를 사용하여 값을 업데이트하십시오.

public void parseXMLAndStoreIt(XmlPullParser myParser) { 
     int event; 
     int counter = 0; 
     String text = null; 
     String[] clients = {}; 

     try { 
      event = myParser.getEventType(); 
      while (event != XmlPullParser.END_DOCUMENT) { 
       String name = myParser.getName(); 

       switch (event) { 
       case XmlPullParser.START_TAG: 
        break; 
       case XmlPullParser.TEXT: 
        text = myParser.getText(); 
        break; 

       case XmlPullParser.END_TAG: 
        if (name.equals("texte")) 
         message = text.trim(); 

        else if (name.equals("nom")) 
         clients[counter++] = text.trim(); 

        else 

        break; 
       } 
       event = myParser.next(); 

      } 
      parsingComplete = false; 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
끝에
0
public ArrayList<String> parseXMLAndStoreIt(XmlPullParser myParser) { 
     ArrayList<String> clientslist = new ArrayList<String>;  // 1 
        ... 
        else if (name.equals("nom")){ 
         clients = text.trim(); 
         clientslist.add(text.trim());  //2 
        } 
        ... 
     return clientslist; //3 
    } 

, 당신은 목록을 얻을 수