自动更新--解析xml文件(1)
来源:互联网 发布:孤岛惊魂3优化补丁 编辑:程序博客网 时间:2024/06/16 12:56
1. 解析xml文档
1.1 根据字符串类型的文件名字解析xml文件
/* * 解析xml文件 * xml文件实例如下: <?xml version="1.0" encoding="utf-8"?> <employees> <employee> <name>ddviplinux</name> <sex>m</sex> <age>30</age> </employee> <employee> <name>李路</name> <sex>女</sex> <age>20</age> </employee> </employees> * */public void parseXml(String fileName) {try { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document document = db.parse(fileName); NodeList employees = ((Node) document).getChildNodes(); //System.out.println(employees.getLength());//length = 1 代表标签<employees>for (int i = 0; i < employees.getLength(); i++) { Node employee = employees.item(i); NodeList employeeInfo = employee.getChildNodes(); //System.out.println(employeeInfo.getLength()); //length = 5 代表标签<employee> </employee> <employee> </employee> </employees> for (int j = 0; j < employeeInfo.getLength(); j++) { if(j%2 == 0) continue; //在执行到标签</employee>的时候才能读取<employee> </employee>中间的数据Node node = employeeInfo.item(j); NodeList employeeMeta = node.getChildNodes(); //System.out.println(j+" "+employeeMeta.getLength()); //length = 7 代表标签 <name> </name> <sex> </sex> <age> </age> </employee>for (int k = 0; k < employeeMeta.getLength(); k++) { if(k%2 == 0) continue; //在执行到标签</name>的时候能读取<name> </name>中间的数据 下面的性别和年龄同上。System.out.println(employeeMeta.item(k).getNodeName() + ":" + employeeMeta.item(k).getTextContent()); } }}System.out.println("解析完毕"); } catch (FileNotFoundException e) { System.out.println(e.getMessage()); } catch (ParserConfigurationException e) { System.out.println(e.getMessage()); } catch (SAXException e) { System.out.println(e.getMessage());} catch (IOException e) { System.out.println(e.getMessage()); } }
1.2 根据数据流解析xml文件到HashMap
/* * xml文件示例 * <?xml version="1.0" encoding="utf-8"?><update> <version>1.7</version> <name>CerClient</name> <url>http://gdown.baidu.com/data/wisegame/f98d235e39e29031/baiduxinwen.apk</url></update> * */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(); 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.http://developer.51cto.com/art/200903/117512.htm
2.http://www.cnblogs.com/coolszy/archive/2012/04/27/2474279.html
0 0
- 自动更新--解析xml文件(1)
- Android 软件自动更新 (网络XML解析、以及本地xml软件版本两种解析方式)
- 安卓自动更新服务端xml文件
- AndroidManifest.xml文件解析(1)
- Ajax解析xml文件1
- XML文件解析(SAX)
- 解析xml文件(jaxp)
- xml文件解析(一)
- xml文件解析(二)
- xml文件的解析-1 dom解析
- 自动更新-下载文件(问题)
- 解析XML文件(SAX方式解析XML)
- xml解析(读取xml,保存文件到xml)
- Android利用SAX解析XML文件(1)
- 对XML文件的重新认识,说说XML文件的二三事(三):XML两类解析模式(1)-SAX解析XML
- XML----SAX解析XML文件
- XML---DOM4J解析XML文件
- XML DOM解析XML文件
- JAR文件转可执行的exe文件
- 三十九 吃饭 我在软件园的那些日子里
- JSP按照顺序展示下拉框 选择框
- MFC Dialog程序如何接收命令行参数
- 64位win7下装Debian双系统
- 自动更新--解析xml文件(1)
- Java类加载器深入讲解--张孝祥老师
- 16 款最流行的 JavaScript 框架
- UILabel的高度自适应
- android项目红色感叹号
- cursoroutofbound error,request index=1,while size=-1
- 如何从wireshark 抓包中的RTP导出 H.264 PAYLOAD,变成可用暴风直接播放的H264 裸码流文件
- 第11周项目6 回文数、素数(5输出1000以内所有的回文数)
- C# 线程入门