学习笔记-Java中的xml文件读取之DOM4J解析
来源:互联网 发布:java的对称杨辉三角 编辑:程序博客网 时间:2024/05/22 03:26
DOM4J同样也是一种针对Java的XML解析技术。
它是JDOM的一种智能分支。它合并了许多超出基本XML文档表示的功能,包括集成的XPath支持、XML Schema支持以及用于大文档或流化文档的基于事件的处理。它还提供了构建文档表示的选项,它通过DOM4J API和标准DOM接口具有并行访问功能。
DOM4J是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件。现如今,越来越多的Java软件都在使用DOM4J来读写XML,比如Hibernation中配置文件的解析是用DOM4J.
DOM4J解析XML步骤:
0. 添加DOM4J的jar包。点击这里跳转到DOM4J官网
1. 创建SAXReader的对象reader
2. 通过reader对象的reader方法,加载xml文件,获取document对象
3. 通过document对象获取根节点
4. 通过element对象的elementIterator方法获取迭代器
5. 遍历迭代器,获取根节点中的信息
6. 通过对根节点的再迭代,获取子节点的信息
举个例子:
在下面的这个程序中,解析一个books.xml文件,并将属性值保存到book实体类对象的List中
public class DOM4JTest { private static List<Book> booksList = new ArrayList<Book>(); public static void main(String[] args) { //1、创建SAXReader的对象reader SAXReader reader = new SAXReader(); try { //2、通过reader对象的reader方法,加载xml文件,获取document对象 Document document = reader.read(new File("src/res/books.xml")); //3、通过document对象获取根节点 Element bookstore = document.getRootElement(); //4、通过element对象的elementIterator方法获取迭代器 Iterator it = bookstore.elementIterator(); //5、遍历迭代器,获取根节点中的信息 while (it.hasNext()) { Book bookEntity = new Book(); System.out.println("=========开始遍历某一本书========"); Element book = (Element) it.next(); //获取book的属性名以及 属性值 List<Attribute> bookAttrs = book.attributes(); for (Attribute attr : bookAttrs) { System.out.println("属性名:" + attr.getName() + "---属性值:"+ attr.getValue()); if (attr.getName().equals("id")) { bookEntity.setId(attr.getValue()); } } Iterator itt = book.elementIterator(); while (itt.hasNext()) { Element bookChild = (Element) itt.next(); System.out.println("节点名:" + bookChild.getName() + "---节点值:"+ bookChild.getStringValue()); if (bookChild.getName().equals("name")) { bookEntity.setName(bookChild.getStringValue()); }else if(bookChild.getName().equals("author")){ bookEntity.setAuthor(bookChild.getStringValue()); }else if(bookChild.getName().equals("year")){ bookEntity.setYear(bookChild.getStringValue()); }else if(bookChild.getName().equals("price")){ bookEntity.setPrice(bookChild.getStringValue()); }else if(bookChild.getName().equals("language")){ bookEntity.setLanguage(bookChild.getStringValue()); } } System.out.println("=========结束遍历某一本书========"); booksList.add(bookEntity); bookEntity=null; } for (Book bk : booksList) { System.out.println(bk.toString()); } } catch (DocumentException e) { e.printStackTrace(); } }}
运行结果:
1 0
- 学习笔记-Java中的xml文件读取之DOM4J解析
- 学习笔记-Java中的xml文件读取之DOM解析
- 学习笔记-Java中的xml文件读取之SAX解析
- 学习笔记-Java中的xml文件读取之JDOM解析
- Java之DOM4J方式解析XML文件(学习笔记)
- 【学习笔记】JAVA之使用dom4j对xml文件解析
- Java 解析 XML 文件之 DOM4J 解析
- dom4j解析(读取)xml文件
- [学习笔记]XML解析之DOM4J
- [学习笔记]XML解析之DOM4J
- DOM4J学习笔记 --- Java遍历解析XML
- java学习笔记:使用dom4j解析xml
- Java之DOM4J方式生成XML文件(学习笔记)
- java解析xml---之---dom4j解析xml文件
- java解析xml---之---dom4j解析xml文件2
- Java生成和解析XML格式文件和字符串的实例代码【dom4j中的SAXReader对象读取并解析xml文件】
- XML学习06-Java中Dom4J方式解析XML文件
- Java DOM4J解析XML文件
- android的四种启动模式
- [C语言] printf函数用法详解
- ANR完全解析
- 原理-关联FP Growth算法
- csr8670--button按键的实现
- 学习笔记-Java中的xml文件读取之DOM4J解析
- 几行代码集成单选按钮功能
- POJ 1664 整数划分问题
- 快排算法
- github版本回退
- 2016SDAU课程练习四1023 Problem W
- 排序
- Mysql 的事务与日志
- Git:Git对象(HEAD,master,branch)