dom4j
java中采用dom4j解析xml文件 一.前言
在最近的开发中用到了dom4j来解析xml文件,以前听说过来解析xml文件的几种标准方式;但是从来的没有应用过来,所以可以在google中搜索dmo4j解析xml文件的方式,学习一下dom4j解析xml的具体操作。
二.代码详情
dom4j是一个第三方开发组开发出的插件,所以在我们使用dom4jf的时候我们要去下载一下dom4j对应版本的jar导入在我们项目中。
1)xml文件:
1 2 3 4 5 6 7 8 9 10 11 |
|
SAXReader就是一个管道,用一个流的方式,把xml文件读出来
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
import java.io.File;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class Demo {
public static void main(String[] args) throws Exception {
SAXReader reader = new SAXReader();
File file = new File( "books.xml" );
Document document = reader.read(file);
Element root = document.getRootElement();
List
for (Element child : childElements) {
//未知属性名情况下
/*List attributeList = child.attributes();
for (Attribute attr : attributeList) {
System.out.println(attr.getName() + ": " + attr.getValue());
}*/
//已知属性名情况下
System.out.println( "id: " + child.attributeValue( "id" ));
//未知子元素名情况下
/*List
for (Element ele : elementList) {
System.out.println(ele.getName() + ": " + ele.getText());
}
System.out.println();
*/
//已知子元素名的情况下
System.out.println( "title" + child.elementText( "title" ));
System.out.println( "author" + child.elementText( "author" ));
//这行是为了格式化美观而存在
System.out.println();
}
} } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
import java.io.File;
import java.util.Iterator;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class Demo {
public static void main(String[] args) throws Exception {
SAXReader reader = new SAXReader();
Document document = reader.read( new File( "books.xml" ));
Element root = document.getRootElement();
Iterator it = root.elementIterator();
while (it.hasNext()) {
Element element = (Element) it.next();
//未知属性名称情况下
/*Iterator attrIt = element.attributeIterator();
while (attrIt.hasNext()) {
Attribute a= (Attribute) attrIt.next();
System.out.println(a.getValue());
}*/
//已知属性名称情况下
System.out.println( "id: " + element.attributeValue( "id" ));
//未知元素名情况下
/*Iterator eleIt = element.elementIterator();
while (eleIt.hasNext()) {
Element e = (Element) eleIt.next();
System.out.println(e.getName() + ": " + e.getText());
}
System.out.println();
*/
//已知元素名情况下
System.out.println( "title: " + element.elementText( "title" ));
System.out.println( "author: " + element.elementText( "author" ));
System.out.println();
}
} } |
文章图片
示例三:创建xml文档并输出到文件
1 2 【dom4j】3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
import java.io.File;
import java.io.FileOutputStream;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
public class Demo {
public static void main(String[] args) throws Exception {
Document doc = DocumentHelper.createDocument();
//增加根节点
Element books = doc.addElement( "books" );
//增加子元素
Element book1 = books.addElement( "book" );
Element title1 = book1.addElement( "title" );
Element author1 = book1.addElement( "author" );
Element book2 = books.addElement( "book" );
Element title2 = book2.addElement( "title" );
Element author2 = book2.addElement( "author" );
//为子节点添加属性
book1.addAttribute( "id" , "001" );
//为元素添加内容
title1.setText( "Harry Potter" );
author1.setText( "J K. Rowling" );
book2.addAttribute( "id" , "002" );
title2.setText( "Learning XML" );
author2.setText( "Erik T. Ray" );
//实例化输出格式对象
OutputFormat format = OutputFormat.createPrettyPrint();
//设置输出编码
format.setEncoding( "UTF-8" );
//创建需要写入的File对象
File file = new File( "D:" + File.separator + "books.xml" );
//生成XMLWriter对象,构造函数中的参数为需要输出的文件流和格式
XMLWriter writer = new XMLWriter( new FileOutputStream(file), format);
//开始写入,write方法中包含上面创建的Document对象
writer.write(doc);
} } |
文章图片
推荐阅读
- 热闹中的孤独
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- Shell-Bash变量与运算符
- JS中的各种宽高度定义及其应用
- 2021-02-17|2021-02-17 小儿按摩膻中穴-舒缓咳嗽
- 深入理解Go之generate
- 异地恋中,逐渐适应一个人到底意味着什么()
- 我眼中的佛系经纪人
- 《魔法科高中的劣等生》第26卷(Invasion篇)发售
- “成长”读书社群招募