我需要从文件夹中读取所有输入的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());
}
}
}
答案 0 :(得分:0)
使用此方法迭代目录中的所有文件:
输出(目录中的文件)在此处用作输入
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。