Java 如何将解析数据写入csv

Java 如何将解析数据写入csv,java,xml,csv,Java,Xml,Csv,我想将XML文件转换为CSV文件。所以我只解析XML文件。现在我想将此解析数据写入CSV文件。我不知道如何写入此解析数据。请在这方面帮助我 <data399173_eff_sor> <record> <ID>1</ID> <item_no>1.0</item_no> <description>Hack off tiles and make good walls</description&

我想将XML文件转换为CSV文件。所以我只解析XML文件。现在我想将此解析数据写入CSV文件。我不知道如何写入此解析数据。请在这方面帮助我

<data399173_eff_sor>
 <record>
   <ID>1</ID>
   <item_no>1.0</item_no>
   <description>Hack off tiles and make good walls</description>
   <price>100</price>
   <base_qty>50</base_qty>
   <var_qty>20</var_qty>
   <base_price_>5000</base_price_>   
 </record>
 <record>
   <ID>1</ID>
   <item_no>1.03</item_no>
   <description>Test</description>
   <price>45</price>
   <base_qty>100</base_qty>
   <var_qty>4500</var_qty>
   <base_price_>0</base_price_>
 </record>
</data399173_eff_sor>

1.
1
砍掉瓷砖,修好墙壁
100
50
20
5000
1.
1.03
试验
45
100
4500
0
Java代码:

public static void main(String argv[]) {         
    try {    
    File fXmlFile = new File("D:/formdata.xml");
    DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
    Document doc = dBuilder.parse(fXmlFile);        
    doc.getDocumentElement().normalize();

    System.out.println("Root element :" + doc.getDocumentElement().getNodeName());   
    NodeList nList = doc.getElementsByTagName("record");     
    System.out.println("----------------------------");  
    for (int temp = 0; temp < nList.getLength(); temp++) {

        Node nNode = nList.item(temp);   
        if (nNode.getNodeType() == Node.ELEMENT_NODE) {  
            Element eElement = (Element) nNode;  
            System.out.println("Item No : " + eElement.getElementsByTagName("item_no").item(0).getTextContent());
            System.out.println("Description : " + eElement.getElementsByTagName("description").item(0).getTextContent());
            System.out.println("price : " + eElement.getElementsByTagName("price").item(0).getTextContent());
            System.out.println("base qty : " + eElement.getElementsByTagName("base_qty").item(0).getTextContent());
            System.out.println("Var qty : " + eElement.getElementsByTagName("var_qty").item(0).getTextContent());
            System.out.println("Base price : " + eElement.getElementsByTagName("base_price_").item(0).getTextContent());                
        }
    }
    generateCsvFile("d:\\testCSV.csv");

    } catch (Exception e) {
    e.printStackTrace();
    }
  }

private static void generateCsvFile(String sFilename) {
    // TODO Auto-generated method stub
    try
    {
        FileWriter writer = new FileWriter(sFilename);

         writer.flush();
         writer.close();             
    }

    catch(IOException e)
    {
         e.printStackTrace();
    } 
}
publicstaticvoidmain(字符串argv[]){
试试{
File fXmlFile=新文件(“D:/formdata.xml”);
DocumentBuilderFactory dbFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder=dbFactory.newDocumentBuilder();
documentdoc=dBuilder.parse(fXmlFile);
doc.getDocumentElement().normalize();
System.out.println(“根元素:+doc.getDocumentElement().getNodeName());
NodeList nList=doc.getElementsByTagName(“记录”);
System.out.println(“-------------------------------”;
对于(int-temp=0;temp

那么现在如何编写这个解析数据呢?我只是创建generateCsvFile()函数来创建一个我不知道从正确的位置调用的文件。一种方法是使用commons csv来编写数据。从测试代码:

 final FileWriter sw = new FileWriter("myfile.csv");
 final CSVPrinter printer = new CSVPrinter(sw, format);

 for (int i = 0; i < nLines; i++) {
     printer.printRecord(lines[i]);
 }

 printer.flush();
 printer.close()
final FileWriter sw=new FileWriter(“myfile.csv”);
最终CSVPrinter打印机=新CSVPrinter(软件,格式);
对于(int i=0;i
CSV是一种逗号分隔的数据格式。从数据字段中创建一个字符串,用逗号分隔,然后使用
generateCsvFile
方法中已有的
writer
编写字符串。@mcfinnigan我知道什么是csv文件。我的问题是如何编写解析数据而不是csv文件。您知道如何解析XML,并在主方法中打印解析后的值,您知道什么是CSV文件,但不确定如何将主方法中的数据获取到CSV文件中?你确定上面的代码是你的吗?@mcfinnigan:是的,我只是从另一个代码中抽取一部分来解析数据。我不明白的是我如何写数据我知道如何附加数据但我只想存储所有数据