您的位置:首页 > 其它

使用dom4j读写xml实例

2016-03-17 21:51 316 查看
使用Dom4j开发,需下载dom4j相应的jar文件,本实例使用的是dom4j-1.6.1(最常用的版本)

官网下载: http://www.dom4j.org/dom4j-1.6.1/

1、把数据从xml文本中读取出来

实例代码如下:

public class ReaderTest {

@Test
public void readTest() throws Exception{
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(new File("nbaStar.xml"));

//获取xml文本的根节点
Element root = document.getRootElement();
//获取xml文本中的内容,但不包括注释和文本的声明
String text = root.asXML();
System.out.println(text);
/*
* 常用读取信息的方法
*
* //获取xml绝对路径
* String xmlPath = document.getName();
* //获取xml的编码方式
* String encoding = document.getXMLEncoding();
*
* //获取根节点的名称
* String rootName = root.getName();
* //获取一个名称为player的节点,默认是自顶向下查找第一个player的节点
*
* Element e = root.element("player");
*
* //遍历各个子节点
* Iterator iterator = root.elementIterator();
* while(iterator.hasNext()){
* System.out.println(((Element)iterator.next()).asXML());
* }
* ...
*/
}

}
运行结果:



2、把数据写入xml文本中

实例代码如下:

public class WriterTest {

@Test
public void writerTest() throws IOException{
Document document = DocumentHelper.createDocument();
//设置xml文本的格式
document.setXMLEncoding("UTF-8");
Element root = document.addElement("description");

/*	这些命名空间添加后,后面子节点全部都会添加xmls... 没有去查找原因
*
*  root.addNamespace("", "http://www.nbaStar.com");
*
*/

NbaStars star[] = new NbaStars[5];
star[0] = new NbaStars(1, "KB", "Laker", "SG");
star[1] = new NbaStars(2, "KD", "OKC", "SF");
star[2] = new NbaStars(3, "Curry", "worriors", "PG");
star[3] = new NbaStars(4, "DW", "Heat", "SG");
star[4] = new NbaStars(5, "LBJ", "CAV", "SF");

for(int i = 0; i< star.length; i++){

NbaStars nbaStar = star[i];
Element e =root.addElement("player");

e.addAttribute("dateTime", ""+new Date());
e.addElement("id").addText(nbaStar.getId().toString());
e.addElement("name").addText(nbaStar.getName());
e.addElement("team").addText(nbaStar.getNbaTeam());
e.addElement("position").addText(nbaStar.getPosition());
}
OutputFormat of = new OutputFormat();
//设置格式,编码...
of.setEncoding("UTF-8");
of.setNewLineAfterDeclaration(false); // 去掉XML声明之后的空行
of.setNewlines(true);
of.setIndent(true);
of.setIndentSize(4);

FileOutputStream fos = new FileOutputStream(new File("nbaStar.xml"));
XMLWriter xmlWriter = new XMLWriter(fos, of);
xmlWriter.write(document);
xmlWriter.flush();
xmlWriter.close();

}
}


运行结果:在项目的目录下生成一个nbaStar.xml的文本文件。内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<description xmlns="http://www.nbaStar.com">
<player xmlns="" dateTime="Thu Mar 17 21:44:10 CST 2016">
<id>1</id>
<name>KB</name>
<team>Laker</team>
<position>SG</position>
</player>
<player xmlns="" dateTime="Thu Mar 17 21:44:10 CST 2016">
<id>2</id>
<name>KD</name>
<team>OKC</team>
<position>SF</position>
</player>
<player xmlns="" dateTime="Thu Mar 17 21:44:10 CST 2016">
<id>3</id>
<name>Curry</name>
<team>worriors</team>
<position>PG</position>
</player>
<player xmlns="" dateTime="Thu Mar 17 21:44:10 CST 2016">
<id>4</id>
<name>DW</name>
<team>Heat</team>
<position>SG</position>
</player>
<player xmlns="" dateTime="Thu Mar 17 21:44:10 CST 2016">
<id>5</id>
<name>LBJ</name>
<team>CAV</team>
<position>SF</position>
</player>
</description>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: