Dom4j循环读取xml节点

进期在做数据处理,遇到使用Dom4j解析文件,记录demo备用。

需求:循环出多个同一父节点下多个字字节点的数据,然后把这些数据按照顺序重新生成新的放入到新的节点名不同的xml内。

准备:dom4j-1.6.1.jar、原始xml文件

<?xml version="1.0" encoding="UTF-8"?>
<book>
    <edition>1.0</edition>
    <copyright>巴伦创维</copyright>
    <article>
        <信息标题>信息标题1</信息标题>
	<内容描述>内容描述1</内容描述>
        <信息内容>信息内容1</信息内容>
        <创建日期>创建日期</创建日期>
        <成文日期>创建日期</成文日期>
    </article>
    <article>
        <信息标题>信息标题2</信息标题>
	<内容描述>内容描述2</内容描述>
        <信息内容>信息内容2</信息内容>
        <创建日期>创建日期2</创建日期>
        <成文日期>成文日期2</成文日期>
    </article>
    <article>
        <信息标题>信息标题3</信息标题>
	<内容描述>内容描述3</内容描述>
        <信息内容>信息内容3</信息内容>
        <创建日期>创建日期3</创建日期>
        <成文日期>成文日期3</成文日期>
    </article>
    <article>
        <信息标题>信息标题4</信息标题>
	<内容描述>内容描述4</内容描述>
        <信息内容>信息内容4</信息内容>
        <创建日期>创建日期4</创建日期>
        <成文日期>成文日期4</成文日期>
    </article>
    <article>
        <信息标题>信息标题5</信息标题>
	<内容描述>内容描述5</内容描述>
        <信息内容>信息内容5</信息内容>
        <创建日期>成文日期5</创建日期>
        <成文日期>成文日期5</成文日期>
    </article>
    <article>
        <信息标题>信息标题6</信息标题>
	<内容描述>内容描述6</内容描述>
        <信息内容>信息内容6</信息内容>
        <创建日期>成文日期6</创建日期>
        <成文日期>成文日期6</成文日期>
    </article>
</book>

直接贴代码:

package mysqlxml;

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

/**
 * 
 * 数据处理,xml转换节点名称
 * @author baron
 *
 */
public class Dom4jDemo1 {
	
    /**
     * 转换xml节点名称
     * @param node 根节点
     */
    public void exportNewXML(Element node){
	String xml="<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
    	xml+="\r\n";
    	xml+="<book>";
    	xml+="\r\n";
    	xml+="\t"+"<edition>1.0</edition>";
    	xml+="\r\n";
    	xml+="\t"+"<copyright>巴伦创维</copyright>";
    	xml+="\r\n";
	//获取子节点集合
    	List<Element> elarts = node.elements();
    	
    	try {
    		//循环
    		for (Element ele : elarts) {
    			//获取article子节点的数据跟xml拼接,生成新的xml文件
    			if(ele.getName().equals("article")){
    				xml+="\t"+"<article> "+"\r\n";
		        	xml+="\t"+"\t"+"<title>"+ ele.element("信息标题").getText() +"</title>" +"\r\n";
		        	xml+="\t"+"\t"+"<crtime>"+ ele.element("创建日期").getText() +"</crtime>" +"\r\n";
		        	xml+="\t"+"\t"+"<reltime>"+ ele.element("成文日期").getText() +"</reltime>" +"\r\n";
		        	xml+="\t"+"\t"+"<depiction>"+ ele.element("内容描述").getText() +"</depiction>" +"\r\n";
		        	xml+="\t"+"\t"+"<text>"+ ele.element("信息内容").getText() +"</text>" +"\r\n";
		        	xml+="\t"+"</article> "+"\r\n";
    			}
    		}
    			xml+="</book>";
    			//指定新文件生成地址并生成
    			File f = new File("F://new/新的.xml");
    			OutputStream out = null ;
    			out = new FileOutputStream(f);
    			byte b[] =xml.getBytes() ;
    			out.write(b) ;
			} catch (Exception e) {
				e.printStackTrace();
			}
		
		System.out.println("成功了!");
		
	}
	
	public static void main(String[] args) throws DocumentException {
		
		SAXReader red = new SAXReader();
		//读取文件
	    Document document = red.read(new File("F://new/旧的.xml"));
		Element node = document.getRootElement();
		Dom4jDemo1 dd = new Dom4jDemo1();
		dd.exportNewXML(node);
		
	}
}

运行结果:

<?xml version="1.0" encoding="UTF-8"?>
<book>
	<edition>1.0</edition>
	<copyright>巴伦创维</copyright>
	<article> 
		<title>信息标题1</title>
		<crtime>创建日期</crtime>
		<reltime>创建日期</reltime>
		<depiction>内容描述1</depiction>
		<text>信息内容1</text>
	</article> 
	<article> 
		<title>信息标题2</title>
		<crtime>创建日期2</crtime>
		<reltime>成文日期2</reltime>
		<depiction>内容描述2</depiction>
		<text>信息内容2</text>
	</article> 
	<article> 
		<title>信息标题3</title>
		<crtime>创建日期3</crtime>
		<reltime>成文日期3</reltime>
		<depiction>内容描述3</depiction>
		<text>信息内容3</text>
	</article> 
	<article> 
		<title>信息标题4</title>
		<crtime>创建日期4</crtime>
		<reltime>成文日期4</reltime>
		<depiction>内容描述4</depiction>
		<text>信息内容4</text>
	</article> 
	<article> 
		<title>信息标题5</title>
		<crtime>成文日期5</crtime>
		<reltime>成文日期5</reltime>
		<depiction>内容描述5</depiction>
		<text>信息内容5</text>
	</article> 
	<article> 
		<title>信息标题6</title>
		<crtime>成文日期6</crtime>
		<reltime>成文日期6</reltime>
		<depiction>内容描述6</depiction>
		<text>信息内容6</text>
	</article> 
</book>
结束。


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值