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

前端之家收集整理的这篇文章主要介绍了自动更新--解析xml文件(1)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

1.解析xml文档

1.1根据字符串类型的文件名字解析xml文件

  1. /*
  2. * 解析xml文件
  3. * xml文件实例如下:
  4. <?xml version="1.0" encoding="utf-8"?>
  5. <employees>
  6. <employee>
  7. <name>ddviplinux</name>
  8. <sex>m</sex>
  9. <age>30</age>
  10. </employee>
  11. <employee>
  12. <name>李路</name>
  13. <sex>女</sex>
  14. <age>20</age>
  15. </employee>
  16. </employees>
  17. * */
  18. public void parseXml(String fileName) {
  19. try {
  20. DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
  21. DocumentBuilder db = dbf.newDocumentBuilder();
  22. Document document = db.parse(fileName);
  23. NodeList employees = ((Node) document).getChildNodes();
  24. //System.out.println(employees.getLength());//length = 1 代表标签<employees>
  25. for (int i = 0; i < employees.getLength(); i++) {
  26. Node employee = employees.item(i);
  27. NodeList employeeInfo = employee.getChildNodes();
  28. //System.out.println(employeeInfo.getLength());
  29. //length = 5 代表标签<employee> </employee> <employee> </employee> </employees>
  30. for (int j = 0; j < employeeInfo.getLength(); j++) {
  31. if(j%2 == 0) continue; //在执行到标签</employee>的时候才能读取<employee> </employee>中间的数据
  32. Node node = employeeInfo.item(j);
  33. NodeList employeeMeta = node.getChildNodes();
  34. //System.out.println(j+" "+employeeMeta.getLength());
  35. //length = 7 代表标签 <name> </name> <sex> </sex> <age> </age> </employee>
  36. for (int k = 0; k < employeeMeta.getLength(); k++) {
  37. if(k%2 == 0) continue; //在执行到标签</name>的时候能读取<name> </name>中间的数据 下面的性别和年龄同上。
  38. System.out.println(employeeMeta.item(k).getNodeName() + ":" + employeeMeta.item(k).getTextContent());
  39. }
  40. }
  41. }
  42. System.out.println("解析完毕");
  43. } catch (FileNotFoundException e) {
  44. System.out.println(e.getMessage());
  45. } catch (ParserConfigurationException e) {
  46. System.out.println(e.getMessage());
  47. } catch (SAXException e) {
  48. System.out.println(e.getMessage());
  49. } catch (IOException e) {
  50. System.out.println(e.getMessage());
  51. }
  52. }


1.2根据数据流解析xml文件到HashMap

  1. /*
  2. * xml文件示例
  3. * <?xml version="1.0" encoding="utf-8"?>
  4. <update>
  5. <version>1.7</version>
  6. <name>CerClient</name>
  7. <url>http://gdown.baidu.com/data/wisegame/f98d235e39e29031/baiduxinwen.apk</url>
  8. </update>
  9.  
  10. * */
  11. public class ParseXmlService {
  12. public HashMap<String,String> parseXml(InputStream inStream) throws Exception
  13. {
  14. HashMap<String,String> hashMap = new HashMap<String,String>();
  15. // 实例化一个文档构建器工厂
  16. DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
  17. // 通过文档构建器工厂获取一个文档构建器
  18. DocumentBuilder builder = factory.newDocumentBuilder();
  19. // 通过文档通过文档构建器构建一个文档实例
  20. Document document = builder.parse(inStream);
  21. //获取XML文件根节点
  22. Element root = document.getDocumentElement();
  23. //获得所有子节点
  24. NodeList childNodes = root.getChildNodes();
  25. for (int j = 0; j < childNodes.getLength(); j++)
  26. {
  27. //遍历子节点
  28. Node childNode = (Node) childNodes.item(j);
  29. if (childNode.getNodeType() == Node.ELEMENT_NODE)
  30. {
  31. Element childElement = (Element) childNode;
  32. //版本号
  33. if ("version".equals(childElement.getNodeName()))
  34. {
  35. hashMap.put("version",childElement.getFirstChild().getNodeValue());
  36. }
  37. //软件名称
  38. else if (("name".equals(childElement.getNodeName())))
  39. {
  40. hashMap.put("name",childElement.getFirstChild().getNodeValue());
  41. }
  42. //下载地址
  43. else if (("url".equals(childElement.getNodeName())))
  44. {
  45. hashMap.put("url",childElement.getFirstChild().getNodeValue());
  46. }
  47. }
  48. }
  49. return hashMap;
  50. }
  51.  
  52. }


参考网址:

1.http://developer.51cto.com/art/200903/117512.htm

2.http://www.cnblogs.com/coolszy/archive/2012/04/27/2474279.html

猜你在找的XML相关文章