xml文件解析类及Android项目中常用到的两种获取xml文件方式
2015-11-22 22:08
706 查看
下面总结一下在项目中用到的.xml文件解析类的写法,可用于解析存储在本地的xml文件或者从网络上下载到的xml文件。
1.解析事先存放在本地Download目录下的xml:
2.解析Android工程目录下的xml:
InputStream inStream = ParseXmlService.class.getClassLoader().getResourceAsStream("xxx.xml");
ParseXmlService service = new ParseXmlService();
try {
mHashMap = service.parseXml(inStream);
} catch (Exception e) {
e.printStackTrace();
}
import java.io.InputStream; import java.util.HashMap; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; public class ParseXmlService { public HashMap<String, String> parseXml(InputStream inStream) throws Exception { HashMap<String, String> hashMap = new HashMap<String, String>(); // 实例化一个文档构建器工厂 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); // 通过文档构建器工厂获取一个文档构建器 DocumentBuilder builder = factory.newDocumentBuilder(); // 通过文档构建器构建一个文档实例 Document document = builder.parse(inStream); // 通过文档实例获取XML文件根节点 Element root = document.getDocumentElement(); // 获得所有子节点 NodeList childNodes = root.getChildNodes(); // 循环put到HashMap中 for (int j = 0; j < childNodes.getLength(); j++) { // 遍历子节点 Node childNode = (Node) childNodes.item(j); if (childNode.getNodeType() == Node.ELEMENT_NODE) { Element childElement = (Element) childNode; if ("version".equals(childElement.getNodeName())) { // 版本号 hashMap.put("version", childElement.getFirstChild().getNodeValue()); }else if (("name".equals(childElement.getNodeName()))) { // 软件名称 hashMap.put("name", childElement.getFirstChild().getNodeValue()); }else if (("url".equals(childElement.getNodeName()))) { // 下载地址 hashMap.put("url", childElement.getFirstChild().getNodeValue()); } } } return hashMap; } }
1.解析事先存放在本地Download目录下的xml:
String path = Environment.getExternalStorageDirectory()+ "/download/xxx.xml"; InputStream inStream = ClassLoader.getSystemResourceAsStream(path); ParseXmlService service = new ParseXmlService(); try { mHashMap = service.parseXml(inStream); } catch (Exception e) { e.printStackTrace(); }
2.解析Android工程目录下的xml:
InputStream inStream = ParseXmlService.class.getClassLoader().getResourceAsStream("xxx.xml");
ParseXmlService service = new ParseXmlService();
try {
mHashMap = service.parseXml(inStream);
} catch (Exception e) {
e.printStackTrace();
}
相关文章推荐
- 王学岗属性动画上(十)——使用xml文件配置多个动画(2)
- SurfaceView + SurfaceHolder 入门
- 横向listview( HorizontalListView) item平分屏幕的解决方案 可以一屏幕显示n个完整item
- Android手机投影到电脑屏幕的神兵利器
- Android图片加载--妹子图客户端
- 加入数据库mysql实现android注册登陆功能的客户端服务器源码与解析socket
- JNI编写
- Android Studio上git的使用(2)
- Android开发工具
- android之旋转的刻度盘
- android111 java中调用c代码
- (一)Activity间通信对象---------------Intent
- Android之drawable state各个属性详解
- Android Resource Types之Menu简介
- android LevelListDrawable
- Android高斯模糊、高斯平滑(Gaussian Blur)【1】
- Android Resource Types之Layout简介
- Android学习方法路线
- Android-Material Design布局之第一曲
- Android4.4实现状态栏沉浸