XML文档解析之DOM4J解析
来源:互联网 发布:真盖塔 知乎 编辑:程序博客网 时间:2024/05/22 16:39
使用DOM4J解析也是需要自己加载相关的jar包,DOM4J jar包的下载地址:https://github.com/dom4j/dom4j/releases/tag/dom4j_1_6_1
解析步骤
- 创建SAXReader对象saxReader;
- 通过saxReader对象的read方法将xml文件加载到Document实例对象中;
- 使用getRootElement方法获取xml文件的根节点;
- 使用elementIterator方法获取根节点的所有子节点集合;
- 遍历子节点集合,使用attribute方法获取每个子节点的属性集合;
- 使用getName方法获取属性和节点名称,getValue方法获取属性值,getStringValue方法获取节点值;
常用API
待解析xml文件
<?xml version="1.0" encoding="UTF-8" ?><bookstore> <book id = "1"> <name>冰与火之歌</name> <author>乔治马丁</author> <year>2014</year> <price>89</price> </book> <book id = "2"> <name>安徒生童话</name> <year>2004</year> <price>77</price> <language>English</language> </book></bookstore>
book结构
package XML;/** * Created by lin_y on 2017/6/18. */public class Book { private String id; public String getId() { return id; } public void setId(String id) { this.id = id; } private String name; private String author; private String year; private double price; private String language; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public String getYear() { return year; } public void setYear(String year) { this.year = year; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } public String getLanguage() { return language; } public void setLanguage(String language) { this.language = language; } @Override public String toString() { return "Book{" + "id='" + id + '\'' + ", name='" + name + '\'' + ", author='" + author + '\'' + ", year='" + year + '\'' + ", price=" + price + ", language='" + language + '\'' + '}'; }}
解析文件
package XML;import org.dom4j.Attribute;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.io.SAXReader;import java.io.File;import java.util.ArrayList;import java.util.Iterator;import java.util.List;/** * Created by lin_y on 2017/6/20. */public class XMLDOM4J { public static List<Book> books = new ArrayList<>(); public static void main(String []args) throws DocumentException { // 创建SAXReader对象saxReader SAXReader saxReader = new SAXReader(); // 通过saxReader对象的read方法将xml文件加载到Document实例对象中 Document document = saxReader.read(new File("xml/book.xml")); Element rootElement = document.getRootElement(); // 获取根节点的所有子节点的集合 Iterator<Element> nodes = rootElement.elementIterator(); while(nodes.hasNext()){ Book book = new Book(); Element node = nodes.next(); // 获取book的属性 List<Attribute> attributes = node.attributes(); for(Attribute attr : attributes){ if("id".equals(attr.getName())){ book.setId(attr.getValue()); } } Iterator<Element> e = node.elementIterator(); while(e.hasNext()){ Element bookChild = e.next(); String name = bookChild.getName(); String value = bookChild.getStringValue(); switch (name){ case "name": book.setName(value); break; case "author": book.setAuthor(value); break; case "year": book.setYear(value); break; case "price": book.setPrice(Double.parseDouble(value)); break; case "language": book.setLanguage(value); break; } } books.add(book); } Iterator<Book> e = books.iterator(); while(e.hasNext()){ System.out.println(e.next()); } }}
程序运行结果
阅读全文
0 0
- XML文档解析之dom4j解析案例
- XML文档解析之DOM4J解析
- Dom4j解析XML文档
- dom4j解析xml文档
- DOM4J解析XML文档
- dom4j解析xml文档
- DOM4J解析XML文档
- DOM4J解析XML文档
- Dom4J解析XML文档
- Dom4J解析xml文档
- dom4j解析XML文档
- DOM4J解析XML文档
- dom4j解析xml文档
- DOM4J解析xml文档
- Dom4j解析XML文档
- DOM4J解析XML文档
- DOM4J解析XML文档
- dom4j解析xml文档
- 使用jrtp时,发送方接收不到对方的RTCP包的问题,是因为接收方没有设置目的地址
- java把特殊符号分割的字符串转为数组
- Java内存数据库-H2介绍及实例(SpringBoot)
- ES6学习笔记之《Symbol》
- angularjs2 如何嵌套多层循环
- XML文档解析之DOM4J解析
- ajax 重定向跨域问题
- ios 收集crash xcode 调试 捕捉signal信号
- Android 当前日期,计算时间推后几天和提前几天的封装方法
- 线性表的链式描述
- Python:MECARD字符串转json
- 微信分享
- 百度地图的集成过程
- iOS