SAXReader的使用
一:导入依赖
<dependency><groupId>dom4j</groupId><artifactId>dom4j</artifactId><version>1.6.1</version>
</dependency>
假设xml文件内容如下
<?xml version="1.0" encoding="utf-8"?><data><head name="EASYSCAN" version="3.3.4"><action>1009</action><sessionid>72a9825f0f6d4d2eb732d714fb205188</sessionid></head><body><uploadbatch uniqueid="48e5606521ce459f8128848b8171eb17"><group caseno="202009071001"><doc doccode="202009071001"></doc></group></uploadbatch></body></data>
1:获取根元素
public class Readxml {public static void main(String[] args) {SAXReader saxReader = new SAXReader();try {Document document = saxReader.read(new File("D:\\saxreader.xml"));Element rootElement = document.getRootElement();System.out.println("name:" + rootElement.getName());System.out.println("data:" + rootElement.getText());} catch (DocumentException e) {e.printStackTrace();}}
}
结果:
根元素为data,没有值,因为data里面全是元素节点
2:遍历所有子元素
public class Readxml {public static void main(String[] args) {SAXReader saxReader = new SAXReader();try {Document document = saxReader.read(new File("D:\\saxreader.xml"));Element rootElement = document.getRootElement();System.out.println("name:" + rootElement.getName());System.out.println("data:" + rootElement.getText());System.out.println("--------------");Iterator<Element> iterator = rootElement.elementIterator();while (iterator.hasNext()) {Element next = iterator.next();System.out.println(next.getName() + ":" + next.getText());}} catch (DocumentException e) {e.printStackTrace();}}
}
结果:
根元素data下有两个子节点:head,body
3:只要其中一个子元素并取属性值(一)
public class Readxml {public static void main(String[] args) {SAXReader saxReader = new SAXReader();try {Document document = saxReader.read(new File("D:\\saxreader.xml"));Element rootElement = document.getRootElement();System.out.println("name:" + rootElement.getName());System.out.println("data:" + rootElement.getText());System.out.println("--------------");//获取跟节点下所有head节点Iterator<Element> iterator = rootElement.elementIterator("head");while (iterator.hasNext()) {//next 指的是head ,因为xml文件跟节点下可能不止一个head节点Element next = iterator.next();System.out.println(next.getName());System.out.println("head的属性name的值:" + next.attribute("name").getValue());//获取head下所有action节点Iterator<Element> actionElement = next.elementIterator("action");while (actionElement.hasNext()) {Element action = actionElement.next();System.out.println("head节点下的"+action.getName() + "节点的值:" + action.getText());}}} catch (DocumentException e) {e.printStackTrace();}}
}
4:只要其中一个子元素并取属性值(二)
public class Readxml {public static void main(String[] args) {SAXReader saxReader = new SAXReader();try {Document document = saxReader.read(new File("D:\\saxreader.xml"));Element rootElement = document.getRootElement();System.out.println("name:" + rootElement.getName());System.out.println("data:" + rootElement.getText());System.out.println("--------------");List<Element> headList = rootElement.selectNodes("head");if(headList.size()>0){Element head = headList.get(0);System.out.println(head.getName());System.out.println(head.getText());}else{System.out.println("xml文件有误");}} catch (DocumentException e) {e.printStackTrace();}}
}
错误是缺少依赖
<dependency><groupId>jaxen</groupId><artifactId>jaxen</artifactId><version>1.1.1</version></dependency>
再次运行
public class Readxml {public static void main(String[] args) {SAXReader saxReader = new SAXReader();try {Document document = saxReader.read(new File("D:\\saxreader.xml"));Element rootElement = document.getRootElement();System.out.println("name:" + rootElement.getName());System.out.println("data:" + rootElement.getText());System.out.println("--------------");List<Element> headList = rootElement.selectNodes("head");if(headList.size()>0){Element head = headList.get(0);System.out.println(head.getName());System.out.println(head.getText());System.out.println("head的name属性的值:"+head.attribute("name").getValue());List<Element> actionList = head.selectNodes("action");if(actionList.size()>0){Element action = actionList.get(0);System.out.println("head下节点"+action.getName()+"的值:"+action.getText());System.out.println();}}else{System.out.println("xml文件有误");}} catch (DocumentException e) {e.printStackTrace();}}
}
selectNodes重要语法可自行百度
这里讲解一下selectNodes(“a”)和selectNodes("/a")的区别
element.selectNodes(“a”):从当前节点的儿子节点中选择名称为 a 的所有节点。
element.selectNodes("/a"):获取根节点a下的所有子节点,这里a为根节点
结合本xml,应该这样(data为根节点)
List list = rootElement.selectNodes("/data/head");
System.out.println(list.size());
System.out.println(list.get(0).getName());
结果:
SAXReader的使用相关推荐
- saxreader读取服务器xml文件,使用SAXReader从xml文件读取元素
我试图使用SAXReader读取下面的xml内容 我必须读取节点名称"SelogerListController"的子元素. 节点名称"SelogerListContro ...
- SAXReader解析xml繁体字乱码问题
SAXReader reader = new SAXReader(); //解析时默认为空,需设置 reader.setEncoding("gbk"); 转载于:https://b ...
- DOM4j读取XML文件(SAXReader)
为什么80%的码农都做不了架构师?>>> DOM4j读取XML文件(SAXReader) 一.一个很好的SAXReader读写xml文件的例题: 总结: Document do ...
- DocumentHelper和SAXReader解析XML字符串
最近在看湖北中烟OA门户的项目,中烟门户里面解析XML文档使用的是DocumentHelper,之前做的智能导航项目里面解析XML使用的是SAXReader,很好奇它们有什么区别,于是就查资料将两者的 ...
- java saxreader_JAVA解析XML,SAXReader无法使用
写了段代码要解析XML文件. for (int p = 0; p < files.length; p++) { System.out.println("Dom4jxml2:333::& ...
- Dom4j SAXReader Constructors
Dom4j读取xml: eg1: package xml;import java.io.File;import org.dom4j.DocumentException; import org.dom4 ...
- Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: org/dom4j/io/SAXReader
Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: org/dom4j/io/SAXReader ...
- Java 解析xml 使用SAXReader获取所有标签的key和value的代码实例
Java中使用SAXReader获取xml信息中所有标签的key和value,若是有二级或者继续嵌套,也可以递归获取的代码实例 /*** @author LiXuekai on 2020/7/26*/ ...
- java.lang.NoClassDefFoundError: org/dom4j/io/SAXReader
已经引入了jar包, 还是报java.lang.NoClassDefFoundError: org/dom4j/io/SAXReader 点击PUT INTO OUTPUT ROOT , web-i ...
- 简单使用SAXReader解析xml数据
之前的工作中,一直是使用json格式的数据进行数据传输.很少会接触到xml格式的数据.不过因为工作需求,在对接其他产品的接口时,偶尔会遇到需要使用xml格式数据的情况,所以,也得学学如何解析xml.不 ...
最新文章
- 【ASP.NET北大青鸟】-总结(二)
- 如何让Android对话框全屏 Dialog 全屏
- variable与get_variable
- verilog 浮点转定点_定点数优化:性能成倍提升
- 微博短视频千万级高可用、高并发架构如何设计?
- Websocket——原理及基本属性和方法
- 【C++基础学习】二维数组的动态分配及参数传递
- Python-DDoS攻击
- JavaWeb——关于RequestDispatcher的原理
- python爬虫怎么发布请求_http请求如何在python爬虫中实现?
- delphi html转为图片,Delphi转换Word为HTML文件或其它类型文件的总结
- paip.svn使用最佳实践
- 我的QQ斗地主史及斗地主经验
- Hough变换圆检测定位
- 解决Windows10 14393版本迅雷崩溃问题
- JFinal在使用oracle数据库时页面显示EL表达式获取不到值
- 24岁小伙跟女友回家 与41岁准丈母娘畸恋私奔
- 通过计算机名共享文档,共享文档
- java怎么通过坐标定位控件_[已解决] 可以定位到控件, 但每次执行 click () 方法会报空指针错误 java.lang.NullPointerException...
- Linux程序设计 读笔2 Shell脚本