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

时间:2012-07-16 14:44:55

标签: android android-xml xmlpullparser android-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。我做错了什么?

2 个答案:

答案 0 :(得分:0)

请参阅documentation

将您的代码加入

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) ;             

答案 1 :(得分:0)

从以下位置更改XML:

<ArtistName>Joe</ArtistName>

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

其余部分应按实施方式运作。