`
bcworld
  • 浏览: 37925 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

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

    博客分类:
  • XML
阅读更多

  实际开发中可能需要使用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文件内容如下:

  • 大小: 1.6 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics