本地提供XML数据,Android端获取并解析成List集合显示

本地提供XML数据,使用 MyEclipse ,项目地址

Android端获取并解析成List集合显示,用Android Studio项目地址

该项目在完成的过程中,所遇到的问题:

1、jstl 的 taglib 中的 uri 的设置:(需要到jar包,项目中已经导入)

以前在学Java Web 时有学到过,请按照以下路径找到对应的 url 地址(这个地址不支持EL表达式,下面告知支持EL表示的URL地址)。

图:jstl url路径

支持EL表达式的地址:http://java.sun.com/jstl/core_rt(当然方法不只这一种)

2、MyEclipse 中更改了 ListServlet.java 的包名,导致服务器启动后总是空白,无任何信息。

其实这里,右键更改了包名后,配置文件里并不会自动改变,需要在web.xml中检查配置的servlet-class是否正确,在这里卡得有点久,因为没有啥有价值的提示

3、在jsp页面中,想要输出页面为xml而不是html,需要在 page 标签中设置字段contentType="text/xml"

4、Toast 需要写在UI线程中,这句很重要,以前做项目过程中没有过多的关注Toast,导致这次调试后才发现是Toast部分出了问题。

在网络不佳或没网的时候,请求connection.getResponseCode() 出现崩溃,后来经过调试发现,它们崩溃时报IOException,调试跟踪,我将 Toast 信息写在了 catch 部分,而网络获取是写在子线程中的。

还有另一个错误是,carch 的 Exception e,e 为空,而我接下来也调用了 e.printstacktrace(),需要对 e 的值加以判断。

5、XML 解析时调用 parser.setInput(in,UTF-8); 时,总是崩溃,因跟踪进去时,它是接口,没有找到有价值的信息,网络上所是编码有误,我下载了火狐插件debug跟踪,证明网页响应编码是 UTF-8。

后来通过观察日志信息,发现是因为我提前关闭stream,查找到对应的地方,原来,是我在返回 InputStream 前已经调用了 connection.disconnect() 关闭了连接。

另加一句:获取xml 的地址,必须是局域网的ip地址,不能是 localhost,如用 cmd 输入 ipcpnfig,就可以得到对应的局域网 ip,我的 ip 是 192.168.1.24,你的机器可能会不一样。

通过这个项目,使我加深了对 xml pull 解析的理解,以及巩固子线程与主线程各自的操作范围,解决问题的能力与方式等,都得到了较大的提升。

相关文章

php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念