xml文件解析 (DOM4J解析XML) -java
文章目录
- 前言
- 一、本地XML解析
- 1、导包并配置
- 1、在项目下新建lib文件夹,并把jar包导入。
- 2、更改项目配置
- 2、编写一个简单的本地XML文件
- 3、解析本地XML文件:
- 二、解析网络上的XML文件
- 1.网址:
- 2、来解析此网络XML文件
- 3、DOM4J - XPATH解析XML
- 1、路径表达式
- 2、使用步骤
- 3、利用上述Book案例
- 总结
- DOM4J解析XML
- 文档对象 Document:指的是加载到内存的 整个XML文档.
- 元素对象 Element
前言
今天,我们利用DOM4J 对xml文件进行解析。分别对本地的xml文件和网络上的xml文件进行解析。
提示:以下是本篇文章正文内容。
一、本地XML解析
1、导包并配置
1、在项目下新建lib文件夹,并把jar包导入。
2、更改项目配置
- 接下来
- 选中添加刚才创建的Libraries
- 应用之后如图所示:
2、编写一个简单的本地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>
3、解析本地XML文件:
//获取输入流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
《水浒传》
《水浒传》是第一部描写农民起义的小说,全书围绕“官逼民反”这一线索展开情节,表现了一群不堪暴政欺压的“好汉”揭杆而起,聚义水泊梁山,直至接受招安致使起义失败的全过程。
----------------------------
《西游记》
《西游记》是中国古代第一部浪漫主义章回体长篇神魔小说。现存明刊百回本《西游记》均无作者署名。清代学者吴玉搢等首先提出《西游记》作者是明代吴承恩。
----------------------------
二、解析网络上的XML文件
1.网址:
http://apis.juhe.cn/mobile/get?%20phone=xxxxxx&dtype=xml&key=9f3923e8f87f1ea50ed4ec8c39cc9253
(xxxxx填写电话号码即可)
本api是可以通过电话号码可以查询到此号码的归属地的xml文件
例如此号码:
2、来解析此网络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文件读取结果为:
手机号码归属地为:江苏 常州
3、DOM4J - XPATH解析XML
1、路径表达式
通过路径快速的查找一个或一组元素
- / : 从根节点开始查找
- // : 从发起查找的节点位置 查找后代节点 ***
- . : 查找当前节点
- … :查找父节点
- @ : 选择属性. *
属性使用方式:
- [@属性名=‘值’]
- [@属性名>‘值’]
- [@属性名<‘值’]
- [@属性名!=‘值’]
2、使用步骤
通过Node类的两个方法,
来完成查找: (Node是 Document 与 Element 的父接口)
方法1.
//根据路径表达式, 查找匹配的单个节点
Element e = selectSingleNode("路径表达式");
方法2.
List<Element> es = selectNodes("路径表达式");
3、利用上述Book案例
代码如下:
//获取输入流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解析。
DOM4J解析XML
步骤:
- 引入jar文件
dom4j.jar - 创建一个指向XML文件的输入流
FileInputStream fis = new FileInputStream(“xml文件的地址”); - 创建一个XML读取工具对象
SAXReader sr = new SAXReader(); - 使用读取工具对象, 读取XML文档的输入流 , 并得到文档对象
Document doc = sr.read(fis); - 通过文档对象, 获取XML文档中的根元素对象
Element root = doc.getRootElement();
文档对象 Document:指的是加载到内存的 整个XML文档.
常用方法:
- 通过文档对象, 获取XML文档中的根元素对象 Element root = doc.getRootElement();
- 添加根节点 Element root = doc.addElement(“根节点名称”);
元素对象 Element
指的是XML文档中的单个节点. 常用方法:
- 获取节点名称
String getName(); - 获取节点内容
String getText(); - 设置节点内容
String setText(); - 根据子节点的名称 , 获取匹配名称的第一个子节点对象.
Element element(String 子节点名称); - 获取所有的子节点对象
List elements(); - 获取节点的属性值
String attributeValue(String 属性名称); - 获取子节点的内容
String elementText(String 子节点名称); - 添加子节点
Element addElement(String 子节点名称); - 添加属性
void addAttribute(String 属性名,String 属性值);
xml文件解析 (DOM4J解析XML) -java相关推荐
- Dom4j解析Xml文件,Dom4j创建Xml文件
Dom4j解析Xml文件,Dom4j创建Xml文件 >>>>>>>>>>>>>>>>>>&g ...
- XML及使用dom4j解析XML
XML(Extensible Markup Language)表示可扩展的标记语言 XML的标签没有被预定义,也就是说不是固定的,用户可以根据自身的需求去自定义标签 XML的作用主要是用来存储数据和传 ...
- 对xml文件的sax解析(增删改查)之一
crud(增删改查): c:creat r:retrieve u:update d:delete 以下笔记来自于韩顺平老师的讲解. 现在是用java来操作. 第一步:新建java工程.file-new ...
- pymavlink 源码剖析(一)之XML文件的数据解析
文章目录 1 引言 2 pymavlink 的代码自动生成方法 3 XML 文件的数据解析 3.1 XML 文件预处理 3.2 解析 XML 的数据 3.2.1 依据协议版本初始化一些版本特征变量 3 ...
- 生成XML文件的步骤 解析XML文件
##生成XML文件的步骤 1.初始化一个xml的序列化器 XmlSerializer serializer = Xml.newSerializer(); 2.设置序列化器的参数 serializer. ...
- 第20讲:Mybatis 中 XML 文件是如何解析的?
大家好,我是田哥 本文是MyBatis源码分析系列文章的第20篇讲,本文主要内容:MyBatis 中 XML 文件是如何解析的? 从这一节开始,我们讲开启MyBatis源码分析阶段,下面我们以xml方 ...
- python读取xml文件信息_python读取xml文件方法解析
关于python读取xml文章很多,但大多文章都是贴一个xml文件,然后再贴个处理文件的代码.这样并不利于初学者的学习,希望这篇文章可以更通俗易懂的教如何使用python来读取xml文件. 什么是xm ...
- matlab对xml文件操作,Matlab读写xml文件
xml文件以文档对象模型表示,简称DOM(Document Object Model).在Matlab中,使用xmlread读取xml文件成DOM节点,对xml文件的操作转化成对DOM节点的操作,使用 ...
- 检查xml文件中包含非法xml字符的个数(
xml中需要过滤的字符分为两类,一类是不允许出现在xml中的字符,这些字符不在xml的定义范围之内.另一类是xml自身要使用的字符,如果内容中有这些字符则需被替换成别的字符. 第一类字符 对于第一类字 ...
- python读取xml文件内容_python读取xml文件
关于python读取xml文章很多,但大多文章都是贴一个xml文件,然后再贴个处理文件的代码.这样并不利于初学者的学习,希望这篇文章可以更通俗易懂的教如何使用python来读取xml文件. 什么是xm ...
最新文章
- java听课笔记(十五)之 网络编程
- ExtJs学习笔记(21)-使用XTemplate结合WCF显示数据
- Begin to use Tex Example (from others)
- ElasticSearch的filter原理深度剖析
- ecshop始终显示全部分类
- (转)通过 Javacore 诊断线程挂起等性能问题
- 小瓜牛漫谈 — 获取资源文件
- go分析和kegg分析_一些GO及KEGG分析的知识
- 麻雀的叫声matlab文件,诱捕麻雀叫声mp3下载|
- 台式计算机没有声音图标,win7电脑没有声音扬声器图标不见了怎么办?
- HCIP-H12-221练习题
- leetcode 寻找峰值
- 设计按钮、下拉框、文本框的测试用例要点
- 四、函数的基本概念和使用
- 高德地图自己录制导航声音备份及恢复方法
- 【LeetCode】55. 跳跃游戏 (JavaScript)
- Java算法大全_java贪心算法几个经典例子
- 基础数学复习(3)——曲线拟合
- 计算机音乐谱告白气球乐谱,天谕手游告白气球乐谱代码是什么-天谕手游告白气球乐谱代码分享_快吧手游...
- MATLAB 串口通信