赞
踩
今天,我们利用DOM4J 对xml文件进行解析。分别对本地的xml文件和网络上的xml文件进行解析。
提示:以下是本篇文章正文内容。
<?xml version="1.0" encoding="UTF-8" ?>
<Books>
<book id="1001">
<name>水浒传</name>
<info>《水浒传》是第一部描写农民起义的小说,全书围绕“官逼民反”这一线索展开情节,表现了一群不堪暴政欺压的“好汉”揭杆而起,聚义水泊梁山,直至接受招安致使起义失败的全过程。</info>
</book>
<book id="1002">
<name>西游记</name>
<info>《西游记》是中国古代第一部浪漫主义章回体长篇神魔小说。现存明刊百回本《西游记》均无作者署名。清代学者吴玉搢等首先提出《西游记》作者是明代吴承恩。</info>
</book>
</Books>
//获取输入流 FileInputStream fis = new FileInputStream("src/demo.xml"); //创建XML读取对象 SAXReader sr = new SAXReader(); //读取得到文档对象 Document doc = sr.read(fis); //通过文档获取根元素 Element root = doc.getRootElement(); //开始解析元素 System.out.println(root.getName()); //获取所有子元素 List<Element> es = root.elements(); for(int i=0; i<es.size(); i++) { Element book = es.get(i); System.out.println("《"+book.elementText("name")+"》"); System.out.println(book.elementText("info")); System.out.println("----------------------------"); }
Books为根元素。
Books
《水浒传》
《水浒传》是第一部描写农民起义的小说,全书围绕“官逼民反”这一线索展开情节,表现了一群不堪暴政欺压的“好汉”揭杆而起,聚义水泊梁山,直至接受招安致使起义失败的全过程。
----------------------------
《西游记》
《西游记》是中国古代第一部浪漫主义章回体长篇神魔小说。现存明刊百回本《西游记》均无作者署名。清代学者吴玉搢等首先提出《西游记》作者是明代吴承恩。
----------------------------
http://apis.juhe.cn/mobile/get?%20phone=xxxxxx&dtype=xml&key=9f3923e8f87f1ea50ed4ec8c39cc9253
(xxxxx填写电话号码即可)
本api是可以通过电话号码可以查询到此号码的归属地的xml文件
例如此号码:
//1. 获取到XML资源的输入流 String phone = "xxxxxx"; URL url = new URL("http://apis.juhe.cn/mobile/get? phone=" + phone + "&dtype=xml&key=9f3923e8f87f1ea50ed4ec8c39cc9253"); URLConnection conn = url.openConnection(); InputStream is = conn.getInputStream(); // 2. 创建一个XML读取对象 SAXReader sr = new SAXReader(); // 3. 通过读取对象 读取XML数据,并返回文档对象 Document doc = sr.read(is); // 4. 获取根节点 Element root = doc.getRootElement(); //5. 解析内容 String code = root.elementText("resultcode"); if ("200".equals(code)) { Element result = root.element("result"); String province = result.elementText("province"); String city = result.elementText("city"); if (province.equals(city)) { System.out.println("手机号码归属地为:" + city); } else { System.out.println("手机号码归属地为:" + province + " " + city); } } else { System.out.println("请输入正确的手机号码"); }
刚刚的xml文件读取结果为:
手机号码归属地为:江苏 常州
通过路径快速的查找一个或一组元素
通过Node类的两个方法,
来完成查找: (Node是 Document 与 Element 的父接口)
方法1.
//根据路径表达式, 查找匹配的单个节点
Element e = selectSingleNode("路径表达式");
方法2.
List<Element> es = selectNodes("路径表达式");
代码如下:
//获取输入流 FileInputStream fis = new FileInputStream("src/demo.xml"); //创建XML读取对象 SAXReader sr = new SAXReader(); //读取得到文档对象 Document doc = sr.read(fis); /** * //通过文档获取根元素 * Element root = doc.getRootElement(); * //开始解析元素 * System.out.println(root.getName()); * //获取所有子元素 * List<Element> es = root.elements(); */ //通过文档对象+xpath,查找所有的name节点 List<Node> names = doc.selectNodes("//name"); for(int i=0; i<names.size(); i++) { Node book = names.get(i); //System.out.println("《"+book.elementText("name")+"》"); System.out.println(book.getText()); System.out.println("----------------------------"); }
水浒传
----------------------------
西游记
----------------------------
Process finished with exit code 0
还记得book的xml文件,每本书都有个id,加上属性条件后:
List<Node> names = doc.selectNodes("//book[@id='1001']//name");
此处因为只查找一个,所以可以使用:Node name = doc.selectSingleNode("//book[@id=‘1001’]//name");
输出结果:
水浒传
----------------------------
以上就是xml文件的解析过程。是用DOM4J解析XML的方式。此外还有三种方法:SAX解析、DOM解析、JDOM解析。
步骤:
常用方法:
指的是XML文档中的单个节点. 常用方法:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。