2013-07-29 122 views
-3

我需要從文件夾中讀取所有輸入xml文件並寫入一個輸出文本文件,逗號分隔。我有下面的代碼程序讀取一個文件,有人可以幫我修改它,並從c:/ java /文件夾中讀取所有文件。感謝從文件夾讀取多個xml文件並寫入一個輸出文本文件(逗號分隔)

import java.io.IOException; 
    import org.w3c.dom.*; 
    import org.xml.sax.SAXException; 
    import javax.xml.parsers.*; 
    import javax.xml.xpath.*; 

    public class XPathExample { 

     public static void main(String[] args) throws ParserConfigurationException, 
       SAXException, IOException, XPathExpressionException { 

      DocumentBuilderFactory domFactory = DocumentBuilderFactory 
        .newInstance(); 
      domFactory.setNamespaceAware(true); 
      DocumentBuilder builder = domFactory.newDocumentBuilder(); 
      Document doc = builder.parse("c:/java/test.xml"); 

      XPathFactory factory = XPathFactory.newInstance(); 
      XPath xpath = factory.newXPath(); 
      XPathExpression expr = xpath.compile("//FORM[@name='F00001']  /*/text()"); 

      Object result = expr.evaluate(doc, XPathConstants.NODESET); 
      NodeList nodes = (NodeList) result; 
      for (int i = 0; i < nodes.getLength(); i++) { 
      System.out.println(nodes.item(i).getNodeValue()); 
      } 

      } 

      } 
+1

你有沒有嘗試過自己的東西? –

回答

0

使用該迭代在目錄中的所有文件:

Read all files in a folder

輸出(在目錄文件)作爲輸入這裏

Document doc = builder.parse("<dir file>"); 

使用。如果文件不是XML,它要麼返回null或exceprion被提出(我目前不知道)。無論如何,你必須解決這個問題。

0

要獲取所有目錄中的文件C:\java您可以使用代碼:

for (File file : new File("C:\\java").listFiles()) 
{ 
    Document doc = builder.parse(file.getAbsolutePath()); 
    ... 
} 

可以播放約與在您添加代碼的其餘部分解決這個循環。您還應該添加一些基本檢查,您試圖解析的內容確實也是XML。

相關問題