0

我正在使用 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) ;       
       }

如您所见,我正在尝试使用

解析器.getName()

这是返回null。我究竟做错了什么?

4

2 回答 2

0

查看文档

将您的代码更改为

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) ;             
于 2012-07-16T14:57:01.893 回答
0

从以下位置更改您的 XML:

<ArtistName>Joe</ArtistName>

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

其余的应该按照实施的方式工作。

于 2013-11-09T01:48:14.673 回答