读书人

应用DOM4J读取xml输出为CSV文件

发布时间: 2012-08-13 13:21:53 作者: rapoo

使用DOM4J读取xml输出为CSV文件

? 实际开发中可能需要使用CSV(一种以逗号分隔的文件)文件,程序会读取该CSV文件,然后把数据插入到表中。然而,这种文件当逗号分隔的字段特别多时,操作起来就很麻烦,如修改第73个字段值。

? 下面的程序演示了将字段数据写成XML文件的形式,然后再变换输出CSV文件的形式:

1.XML示例:

<?xml version="1.0" encoding="utf-8"?><records><record no="1"><field lname="ziduan1" wname="W024_MOUSHIKOMINO">2532sf5277</field><field lname="ziduan2" wname="W024_SENYOUCD">123456</field><field lname="ziduan3" wname="W024_ISPZCD">070</field><field lname="ziduan4" wname="W024_TJDSLZCD">1f23</field><field lname="ziduan5" wname="W024_NAME">163</field></record><record no="2"><field lname="ziduan1" wname="W024_MOUSHIKOMINO">2532277</field><field lname="ziduan2" wname="W024_SENYOUCD">123df456</field><field lname="ziduan3" wname="W024_ISPZCD">0370</field><field lname="ziduan4" wname="W024_TJDSLZCD">123</field><field lname="ziduan5" wname="W024_NAME">14sd3</field></record></records>

?2.java代码

? 本程序使用DOM4J方式进行解析,故需要添加dom4j*.jar和jaxen*.jar

import java.io.PrintWriter;import java.util.List;import org.dom4j.Attribute;import org.dom4j.Document;import org.dom4j.Element;import org.dom4j.io.SAXReader;public class Dom4jTest {public static void main(String[] args) throws Exception {SAXReader reader = new SAXReader();Document document = reader.read("I:\\test2.xml");//取得根元素//Element root = document.getRootElement();//System.out.println(root.getName());//Element对象有elementIterator(),可迭代; List<Element> recordList=document.selectNodes("//records/record");List<Attribute>  lNameList=document.selectNodes("//records/record[@no='1']/field/@lname");String temp=null;PrintWriter pw=new PrintWriter("I:\\hello2.csv");for (int k = 0; k < lNameList.size(); k++) {Attribute f=lNameList.get(k);temp=f.getText();if(k==lNameList.size()-1){pw.print(temp);}elsepw.print(temp+",");}pw.println();for (int i = 0; i < recordList.size(); i++) {//取得某个recordElement fieldElement=recordList.get(i);//取得record下面的元素(List)List<Element> fieldList=fieldElement.selectNodes("./field");for (int j = 0; j < fieldList.size(); j++) {Element fieldNodElement=fieldList.get(j);temp=fieldNodElement.getText();if(j==fieldList.size()-1){pw.print(temp);}elsepw.print(temp+",");}pw.println();}pw.close();}}

?3.程序运行后的hello2.csv文件内容如下:

应用DOM4J读取xml输出为CSV文件

读书人网 >XML SOAP

热点推荐