我正在使用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>
其余部分应按执行情况工作。