从文件夹中读取多个xml文件并写入一个输出文本文件(以逗号分隔)

时间:2013-07-29 16:06:47

标签: java

我需要从文件夹中读取所有输入的xml文件并编写一个输出文本文件,以逗号分隔。我有以下代码程序读取一个文件,有人可以帮我修改它并从c:/ java /文件夹中读取所有文件。谢谢

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

            }

             }

2 个答案:

答案 0 :(得分:0)

使用此方法迭代目录中的所有文件:

Read all files in a folder

输出(目录中的文件)在此处用作输入

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

如果file不是xml,则返回null或引发exceprion(我当前不知道)。无论如何,你必须解决这个问题。

答案 1 :(得分:0)

要获取目录C:\java中的所有文件,您可以使用以下代码:

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

您可以在此循环周围添加其余代码的位置。您还应该添加一些基本检查,您尝试解析的内容确实也是XML。