使用dom4j读写xml实例

使用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>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值