【发布时间】:2015-12-06 20:10:19
【问题描述】:
我是初学者,在从网站解析 XML 时遇到很多困难。
这是在将 XML 下载到文件后解析 XML 的代码:
public RSSFeed readFile() throws FileNotFoundException {
RSSFeed feed = new RSSFeed();
RSSLocation location = new RSSLocation();
RSSTime time = new RSSTime();
XmlPullParser parser = Xml.newPullParser();
InputStream inputStream = context.openFileInput(FILENAME);
try {
parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, true);
parser.setInput(inputStream,null);
int eventType = parser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
if(eventType == XmlPullParser.START_TAG){
// yweather:forecast - forecast is name of the element, yweather is namespace
Log.d("Parser Name", parser.getName());
Log.d("Parser Text", parser.getText());
Log.d("Parser Desc", parser.getPositionDescription());
}
eventType = parser.next();
}
} catch (Exception e) {
Log.e("XML Parser", e.toString());
}
return feed;
}
我只是想看看数据是如何被解析的,这样我就可以适当地分配对象及其属性。
我只想在日志中查看基于每种方法返回的内容(getName()、getText()、getAttributeValue()...)
但是,当我使用上面的代码将信息发送到日志时,它只获取第一个标签<weatherdata> 并返回 NullPointerException: println needs a message for the Text。
这里是日志:
12-06 14:52:30.009 17507-17557/com.example.shortn1.whattowear E/XML Parser: java.lang.NullPointerException: println needs a message
12-06 14:52:30.049 17507-17507/com.example.shortn1.whattowear D/Weather Feed: Feed displayed
12-06 14:52:50.849 17507-17554/com.example.shortn1.whattowear D/Parser Name: weatherdata
12-06 14:52:50.849 17507-17554/com.example.shortn1.whattowear E/XML Parser: java.lang.NullPointerException: println needs a message
12-06 14:52:50.889 17507-17507/com.example.shortn1.whattowear D/Weather Feed: Feed displayed
12-06 14:53:10.874 17507-17856/com.example.shortn1.whattowear D/Parser Name: weatherdata
12-06 14:53:10.874 17507-17856/com.example.shortn1.whattowear E/XML Parser: java.lang.NullPointerException: println needs a message
12-06 14:53:10.919 17507-17507/com.example.shortn1.whattowear D/Weather Feed: Feed displayed
12-06 14:53:30.809 17507-17557/com.example.shortn1.whattowear D/Parser Name: weatherdata
12-06 14:53:30.809 17507-17557/com.example.shortn1.whattowear E/XML Parser: java.lang.NullPointerException: println needs a message
12-06 14:53:30.839 17507-17507/com.example.shortn1.whattowear D/Weather Feed: Feed displayed
我的主要活动太长,无法在此处发布,但是有一个位置查找器,并且在 onLocationChanged() 中调用了该方法以下载与该人的位置相对应的 xml。返回文件后,将调用 readFile() 方法。读取文件后,调用另一个方法(记录“显示的提要”)。
我还尝试将 XML 解析器更改为仅通过添加 && parser.getName().equals("name") 从 XML 中获取“名称”字段,但它仍然只读取单词“名称”并且不返回名称的值。
有什么建议吗?感谢所有帮助!提前谢谢你。
【问题讨论】:
标签: android xml parsing xmlpullparser