一:导入依赖

<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的使用相关推荐

  1. saxreader读取服务器xml文件,使用SAXReader从xml文件读取元素

    我试图使用SAXReader读取下面的xml内容 我必须读取节点名称"SelogerListController"的子元素. 节点名称"SelogerListContro ...

  2. SAXReader解析xml繁体字乱码问题

    SAXReader reader = new SAXReader(); //解析时默认为空,需设置 reader.setEncoding("gbk"); 转载于:https://b ...

  3. DOM4j读取XML文件(SAXReader)

    为什么80%的码农都做不了架构师?>>>    DOM4j读取XML文件(SAXReader) 一.一个很好的SAXReader读写xml文件的例题: 总结: Document do ...

  4. DocumentHelper和SAXReader解析XML字符串

    最近在看湖北中烟OA门户的项目,中烟门户里面解析XML文档使用的是DocumentHelper,之前做的智能导航项目里面解析XML使用的是SAXReader,很好奇它们有什么区别,于是就查资料将两者的 ...

  5. java saxreader_JAVA解析XML,SAXReader无法使用

    写了段代码要解析XML文件. for (int p = 0; p < files.length; p++) { System.out.println("Dom4jxml2:333::& ...

  6. Dom4j SAXReader Constructors

    Dom4j读取xml: eg1: package xml;import java.io.File;import org.dom4j.DocumentException; import org.dom4 ...

  7. 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 ...

  8. Java 解析xml 使用SAXReader获取所有标签的key和value的代码实例

    Java中使用SAXReader获取xml信息中所有标签的key和value,若是有二级或者继续嵌套,也可以递归获取的代码实例 /*** @author LiXuekai on 2020/7/26*/ ...

  9. java.lang.NoClassDefFoundError: org/dom4j/io/SAXReader

    已经引入了jar包, 还是报java.lang.NoClassDefFoundError: org/dom4j/io/SAXReader 点击PUT INTO OUTPUT ROOT ,  web-i ...

  10. 简单使用SAXReader解析xml数据

    之前的工作中,一直是使用json格式的数据进行数据传输.很少会接触到xml格式的数据.不过因为工作需求,在对接其他产品的接口时,偶尔会遇到需要使用xml格式数据的情况,所以,也得学学如何解析xml.不 ...

最新文章

  1. 【ASP.NET北大青鸟】-总结(二)
  2. 如何让Android对话框全屏 Dialog 全屏
  3. variable与get_variable
  4. verilog 浮点转定点_定点数优化:性能成倍提升
  5. 微博短视频千万级高可用、高并发架构如何设计?
  6. Websocket——原理及基本属性和方法
  7. 【C++基础学习】二维数组的动态分配及参数传递
  8. Python-DDoS攻击
  9. JavaWeb——关于RequestDispatcher的原理
  10. python爬虫怎么发布请求_http请求如何在python爬虫中实现?
  11. delphi html转为图片,Delphi转换Word为HTML文件或其它类型文件的总结
  12. paip.svn使用最佳实践
  13. 我的QQ斗地主史及斗地主经验
  14. Hough变换圆检测定位
  15. 解决Windows10 14393版本迅雷崩溃问题
  16. JFinal在使用oracle数据库时页面显示EL表达式获取不到值
  17. 24岁小伙跟女友回家 与41岁准丈母娘畸恋私奔
  18. 通过计算机名共享文档,共享文档
  19. java怎么通过坐标定位控件_[已解决] 可以定位到控件, 但每次执行 click () 方法会报空指针错误 java.lang.NullPointerException...
  20. Linux程序设计 读笔2 Shell脚本

热门文章

  1. win10 初试tracert
  2. solidworks图纸模板添加_solidworks工程图模板制作(大全).doc
  3. 单片机电脑计算机键盘设计,基于单片机的电脑弹簧机按键板的设计与实现
  4. 我用 Python 自制成语接龙小游戏,刺激!
  5. 服务器安装cos系统,COS(国产操作系统)安装教程
  6. 关于新APP,从交底书入手
  7. 宝马和戴姆勒冻结自动驾驶合作项目
  8. 跨平台 App 开发引擎 CrossApp
  9. 一款开源且超好用的网站克隆机 HTTrack
  10. 下载Django中文官方文档