2013-10-16 51 views
0

我想将XML文件转换为CSV文件。所以我只是解析XML文件。现在我想写这个解析数据到CSV文件中。我不知道如何写这个解析数据。所以,请帮我在如何将解析数据写入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> 

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(); 
    } 
} 

所以现在该怎么写解析数据我刚才创建generateCsvFile()函数创建的文件,我不知道其所谓的正确的地方

+0

CSV是逗号分隔的数据格式。从数据字段中创建一个字符串,用逗号分隔,并使用'generateCsvFile'方法中已有的'writer'编写它们。 – mcfinnigan

+0

@mcfinnigan我knw是什么csv文件。我的问题是如何编写解析数据不是什么csv文件 – Aanshi

+0

所以你知道如何解析XML,并打印出你的主要方法中的解析值,你知道什么是CSV文件是,但你不确定如何从你的主要方法获取数据到CSV文件中?你确定你的代码实际上是你的吗? – mcfinnigan

回答

0

单程i s使用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()