实际开发中可能需要使用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);
}else
pw.print(temp+",");
}
pw.println();
for (int i = 0; i < recordList.size(); i++) {
//取得某个record
Element 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);
}else
pw.print(temp+",");
}
pw.println();
}
pw.close();
}
}
3.程序运行后的hello2.csv文件内容如下: