我正在使用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。我做错了什么?
答案 0 :(得分: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) ;
答案 1 :(得分:0)
从以下位置更改XML:
<ArtistName>Joe</ArtistName>
到
<ArtistName name="ArtistName">Joe</ArtistName>
其余部分应按实施方式运作。