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; } }
原文地址:http://blog.csdn.net/li1500742101/article/details/41014189