DOM4J性能优异,灵活性好,开源且功能强大,是较流行的一种XML读写方式。
1、DOM4J解析XML文件1、创建SAXReader对象reader
2、通过reader的read方法加载XML文件,并获取document对象
3、通过document对象获取根节点
4、通过根节点获取迭代器,遍历迭代器
在遍历迭代器之中可以获得节点的属性名、属性值及子节点等相关内容,常用的方法如下:
1、book.attributes() 获取book节点的所有属性,保存在List<Attribute>集合中
2、attr.getName() 获取属性名或子节点名
3、attr.getValue() 获取属性值
4、bookChild.getStringValue() 获取子节点文本内容
private void parseXML() throws Exception {
// 创建SAXReader对象reader
SAXReader reader = new SAXReader();
// 通过reader的read方法加载xml文件,并获取document对象
Document document = reader.read(new File("books.xml"));
// 通过document对象获取根节点
Element bookStore = document.getRootElement();
// 获取迭代器
Iterator it = bookStore.elementIterator();
// 遍历迭代器,获取根节点中的信息
while (it.hasNext()) {
Element book = (Element) it.next(); // 返回的是Object类型,需要强制转换
// 获取book的属性名和属性值
List<Attribute> bookAttrs = book.attributes();
for (Attribute attr : bookAttrs) {
System.out.println("属性名:" + attr.getName() + " 属性值:" + attr.getValue());
}
// 对book中子节点进行遍历
Iterator itt = book.elementIterator();
while (itt.hasNext()) {
Element bookChild = (Element) itt.next();
System.out.println("子节点名:" + bookChild.getName() + " 子节点值:" + bookChild.getStringValue());
}
}
}
2、DOM4J生成XML文件
private void createXML() throws Exception {
//1、創建Document對象,代表整个XML文档
Document document = DocumentHelper.createDocument();
//2、添加根节点rss,并添加属性和属性值
Element rss = document.addElement("rss");
rss.addAttribute("version", "2.0");
// 生成子节点及文本
Element channel = rss.addElement("channel");
Element title = channel.addElement("title");
title.setText("国内最新新闻");
//设置XML生成格式
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
//3、生成XML文件
File file = new File("rssnews.xml");
XMLWriter writer = new XMLWriter(new FileOutputStream(file),format);
writer.setEscapeText(false);//设置特殊字符不转义,默认是转义的true
writer.write(document);
writer.close();
}