2013-10-16 110 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()