Android SDK:Xml Pull Parser-如何获取节点名称



我正在使用Xml Pull Parser来解析URL中的一些Xml。我检索节点的值没有任何问题,但我似乎无法获得节点名称——它只是返回null。

例如:

<ArtistName>Joe</ArtistName>

我可以检索"Joe",但无法获取"Joe"来自哪个节点,所以它没有返回"ArtistName",而是返回null。

这是我的代码:

public static void getAllXML(String url) throws 
       XmlPullParserException, IOException, URISyntaxException{ 
           Log.i("*****PARSER CALLED******","****PARSER CALLED*****");
         XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
         factory.setNamespaceAware(true);
         XmlPullParser parser = factory.newPullParser(); 
         String tagName = parser.getName();
         parser.setInput(new InputStreamReader(getUrlData(url)));  
         XmlUtils.beginDocument(parser,"EventsPricePoints");
         int eventType = parser.getEventType();
         do{
           XmlUtils.nextElement(parser);
           parser.next();
           String nodeName = parser.getName();
           eventType = parser.getEventType();
           if(eventType == XmlPullParser.TEXT){

             Log.i("************PARSER**********",nodeName+"....."+parser.getText());
           }
         } while (eventType != XmlPullParser.END_DOCUMENT) ;       
       }

正如你所看到的,我正试图通过使用来获得节点名称

parser.getName()

其返回null。我做错了什么?

请参阅文档

将您的代码转换为

do{ 
   XmlUtils.nextElement(parser);
   parser.next();
   String nodeName;
   eventType = parser.getEventType();
   if(eventType == XmlPullParser.TEXT){
     if(nodeName!=null) {
       Log.i("************PARSER**********","Last parsed node name="+nodeName+"....."+parser.getText());
     }
   } else if(eventType == XmlPullParser.START_TAG) {
       nodeName = parser.getName()
   }
 } while (eventType != XmlPullParser.END_DOCUMENT) ;             

更改您的XML from:

<ArtistName>Joe</ArtistName>

<ArtistName name="ArtistName">Joe</ArtistName>

其余部分应按执行情况工作。

相关内容

  • 没有找到相关文章

最新更新