2016-06-21 2 views
0

Я пытаюсь разобрать XML-код SOAP с помощью XmlPullParser. Но всегда получаю null как результат.Android: XmlPullParser getAttributeValue возвращает null

<soap:Body> 
<Quote> 
<ROLE>Error</ROLE> 
<ERRORCODE>3</ERRORCODE> 
<ERRORSTRING>Username and password wrong!!!</ERRORSTRING> 
</Quote> 
</soap:Body> 
</soap:Envelope> 

Я пытаюсь прочитать каждое значение узла XMLPullParser

XmlPullParserFactory xmlFactoryObject = XmlPullParserFactory.newInstance(); 
XmlPullParser myparser = xmlFactoryObject.newPullParser(); 
myparser.setInput(inputStream, null); 
int event = myparser.getEventType(); 
while (event != XmlPullParser.END_DOCUMENT) 
{ 
    String name=myparser.getName(); 
    switch (event){ 
    case XmlPullParser.START_TAG: 
    if(name.equals("ERRORSTRING")){ 
    Log.e("Tag ","if xml data "+myparser.getAttributeValue(name,"value")); 
    } 
    break; 
    case XmlPullParser.END_TAG: 
    if(name.equals("Quote")){ 
    Log.e("Tag ","xml data "+myparser.getAttributeValue(null,"ERRORSTRING")); 
    } 
    break; 
    } 
    event = myparser.next(); 
} 

подводит нулевое значение в качестве результата.

Может любой, пожалуйста, помогите мне.

ответ

0

сделать это таким образом:

XmlPullParserFactory xmlFactoryObject = XmlPullParserFactory.newInstance(); 
XmlPullParser myparser = xmlFactoryObject.newPullParser(); 
myparser.setInput(inputStream, null); 
int event = myparser.getEventType(); 
while (event != XmlPullParser.END_DOCUMENT) 
{ 
    String name=myparser.getName(); 
    switch (event){ 
    case XmlPullParser.START_TAG: 
    if(name.equals("ERRORSTRING")){ 
    Log.e("Tag ","if xml data "+myparser.getAttributeValue(name,"value")); 
    if(name.equals("Quote")){ 
    Log.e("Tag ","xml data "+myparser.getAttributeValue(null,"ERRORSTRING")); 
    } 
    break; 

    case XmlPullParser.END_TAG: 
    break; 
    } 
    event = myparser.next(); 
}