加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

自动更新--解析xml文件(1)

发布时间:2020-12-16 06:37:37 所属栏目:百科 来源:网络整理
导读:1. 解析xml文档 1.1根据字符串类型的文件名字解析xml文件 /* * 解析xml文件 * xml文件实例如下: ?xml version="1.0" encoding="utf-8"? employees employee nameddviplinux/name sexm/sex age30/age /employee employee name李路/name sex女/sex age20/age

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读