0

I am using the Xml Pull Parser to parse some Xml from a URL. I'm retrieving the values of the nodes without any problem, however I can't seem to get the node name - it's just returning null.

For example:

<ArtistName>Joe</ArtistName>

I can retrieve "Joe" but can't get what node "Joe" is from, so instead of returning "ArtistName", it returns null.

Here is my code:

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

As you can see, i'm trying to get the node name by using

parser.getName()

which is returning null. What am I doing wrong?

user1417302
  • 411
  • 3
  • 9
  • 22

2 Answers2

0

See documentation

Canche your code to

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) ;             
Den
  • 21
  • 3
  • is there no way to get the node name of non start or end tags? – user1417302 Jul 16 '12 at 15:13
  • to @user1417302 You can save last founded node name. I update answer – Den Jul 16 '12 at 15:23
  • unfortunately this still doesn't work, the if(nodeName!=null) never gets called as the variable nodeName must be initialized to null – user1417302 Jul 16 '12 at 15:30
  • at this point nodeName will contain "ArtistName" from XML } else if(eventType == XmlPullParser.START_TAG) { nodeName = parser.getName() } – Den Jul 16 '12 at 15:34
0

Change your XML from:

<ArtistName>Joe</ArtistName>

to

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

The rest should work as implemented.

Manny
  • 1