2016-05-12 15 views
0

私のアプリケーションでは、Webサービスから以下のHttpresponseをxml形式で受信しています。どのようにアンドロイドでXMLレスポンスを解析するのですか?

private void parseXML(XmlPullParser parser) throws XmlPullParserException,IOException 
{ 
    ArrayList<SMSResponse> products = null; 
    int eventType = parser.getEventType(); 
    SMSResponse currentProduct = null; 

    while (eventType != XmlPullParser.END_DOCUMENT){ 
     Log.e("ENTER-", "while loop"); 
     String name = null; 
     switch (eventType){ 
      case XmlPullParser.START_DOCUMENT: 
       products = new ArrayList<SMSResponse>(); 
       Log.e("ENTER-", "swicth case -1"); 
       break; 
      case XmlPullParser.START_TAG: 

       name = parser.getName(); 
       Log.e("start name", name); 
       if(name.equals("results")) 
       { 
        Log.e("start name", name); 
       } 
       else if(name.equals("result")) 
       { 
        Log.e("start name", name); 
        currentProduct = new SMSResponse(); 
       } 
       else if(name.equals("status")) 
       { 
        Log.e("start name", name); 
        System.out.println("status value=="); 
        currentProduct.status = parser.getProperty(name).toString(); 

       } 
       else if(name.equals("messageid")) 
       { 
        Log.e("start name", name); 
        System.out.println("messageid value=="+ parser.getProperty(name)); 
        currentProduct.messageid = parser.getProperty(name).toString(); 
       } 
       else if(name.equals("destination")) 
       { 
        Log.e("start name", name); 
        System.out.println("destination value=="+ parser.getProperty(name)); 
        currentProduct.destination = parser.getProperty(name).toString(); 
       } 

       break; 
      case XmlPullParser.END_TAG: 
       name = parser.getName(); 
       Log.e("end name", name); 
//     Log.e("ENTER-", "switch case-3"); 
       if (name.equalsIgnoreCase("results")){ 
        Log.e("end name", name); 
        products.add(currentProduct); 
       } 
     } 
     eventType = parser.next(); 
    } 


    Log.e("Array", products.toString()); 

//  printProducts(products); 
} 

しかし、私は、値としてnull応答を取得しています:

<?xml version="1.0" encoding="UTF-8"?> 
<results> 
<result> 
<status>0</status> 
<messageid>213123</messageid> 
<destination>1234567890</destination> 
</result> 
</results> 

は、私は以下の形式でレスポンスを解析しようとしました。

xmlヘッダーの値を抽出するにはどうすればよいですか?

助けてください!前もって感謝します!

+0

投稿者logcat –

+0

JSONは人間が解析するのは簡単ですが、XMLはコンピュータが解析するのが簡単だと思います。 –

答えて

1

xml操作を処理するためのコードスニペットは次のとおりです。これまでxmlパーサークラスを使用しています。各xml要素をループして子データを取得しています。

static final String KEY_RESULT = "result"; // parent node 
static final String KEY_STATUS = "status"; 
static final String KEY_MESSAGE_ID = "messageid"; 
static final String KEY_DESC = "description"; 

XMLParser parser = new XMLParser(); 
//xml getting from url 
String xml = parser.getXmlFromUrl(URL); // getting XML 
Document doc = parser.getDomElement(xml); // getting DOM element 

NodeList nl = doc.getElementsByTagName(KEY_RESULT); 

// looping through all item nodes <item>  
for (int i = 0; i < nl.getLength(); i++) { 
    String name = parser.getValue(e, KEY_STATUS); // name child value 
    String cost = parser.getValue(e, KEY_MESSAGE_ID); // cost child value 
    String description = parser.getValue(e, KEY_DESC); // description child value 
} 
関連する問題