package com.novelbook.android.upgrade; 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 parseXml(InputStream inStream) throws Exception { HashMap hashMap = new HashMap(); // 实例化一个文档构建器工厂 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 = childNodes.item(j); if (childNode.getNodeType() == Node.ELEMENT_NODE){ Element childElement = (Element) childNode; hashMap.put(childElement.getNodeName(),childElement.getFirstChild().getNodeValue()); } /*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()); } else if (("details".equals(childElement.getNodeName()))) { hashMap.put("details",childElement.getFirstChild().getNodeValue()); } }*/ } return hashMap; } public HashMap> parseMultiXml(InputStream inStream) throws Exception { HashMap> hashMap = new HashMap>(); // 实例化一个文档构建器工厂 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 = childNodes.item(j); if (childNode.getNodeType() == Node.ELEMENT_NODE){ Element childElement = (Element) childNode; hashMap.put(childElement.getNodeName(),parseChildXml(childNode.getChildNodes())); } } return hashMap; } public HashMap parseChildXml(NodeList childNodes ) throws Exception { HashMap hashMap = new HashMap(); for (int j = 0; j < childNodes.getLength(); j++) { //遍历子节点 Node childNode = childNodes.item(j); if (childNode.getNodeType() == Node.ELEMENT_NODE) { Element childElement = (Element) childNode; hashMap.put(childElement.getNodeName(), childElement.getFirstChild().getNodeValue()); } } return hashMap; } }