0

Xml プル パーサーを使用して、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を返しています。私は何を間違っていますか?

4

2 に答える 2

0

XML を次のように変更します。

<ArtistName>Joe</ArtistName>

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

残りは実装どおりに機能するはずです。

于 2013-11-09T01:48:14.673 に答える
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 に答える