-3

我需要从文件夹中读取所有输入 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());
            }

            }

             }
4

2 回答 2

0

使用它来迭代目录中的所有文件:

读取文件夹中的所有文件

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

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

如果文件不是 xml,它要么返回 null,要么引发异常(我目前不知道)。不管怎样,你必须解决这个问题。

于 2013-07-29T16:10:00.597 回答
0

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

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

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

于 2013-07-29T16:13:53.413 回答