解析xml文件错误

时间:2013-07-30 15:09:02

标签: java xml

我正在尝试将XML文件转换为如下文档:

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document document = db.parse("C:/xml/41111208890622000144550010000000011000003066-nfe.xml"); 
Document document = db.parse(new InputSource(new StringReader("C:/xml/41111208890622000144550010000000011000003066-nfe.xml")));

但它提供了错误消息:

Exception in thread "main" org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1;

有人知道该怎么做?

1 个答案:

答案 0 :(得分:4)

您目前正在创建包含字符串

的阅读器
"C:/xml/41111208890622000144550010000000011000003066-nfe.xml"

并要求DocumentBuilder解析它就好像它是XML,当它显然不是。 (我指的是第二个parse调用,我怀疑它是你实际代码中的调用。你提供的代码不能编译,因为你已经声明了document两次。)< / p>

你可以创建一个FileInputStream或者InputStreamReader包围它:

String filename = "C:/xml/41111208890622000144550010000000011000003066-nfe.xml";
try (FileInputStream input = new FileInputStream(filename))
{
    Document document = db.parse(new InputSource(input));
}

(我更喜欢直接使用流,让解析器检测编码。)

现在这个电话:

Document document = db.parse("C:/xml/...");

几乎工作,并且实际工作,使用DocumentBuilder.parse(String) - 这取决于parse是否乐意将文件名作为URI处理。 (我已经看到一些很好的XML API,有些则没有。)如果它不起作用,请尝试使用file://方案:

Document document = db.parse("file://C:/xml/...");