下面总结一下在项目中用到的.xml文件解析类的写法,可用于解析存储在本地的xml文件或者从网络上下载到的xml文件。
- 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();
- }