进期在做数据处理,遇到使用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>
结束。