码迷,mamicode.com
首页 > 其他好文 > 详细

解析xml文件

时间:2014-11-11 19:14:15      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:android   java   xml   解析   

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;
    }

}


 

 

解析xml文件

标签:android   java   xml   解析   

原文地址:http://blog.csdn.net/li1500742101/article/details/41014189

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!