0

I'm trying to transform an XML file into a document like this:

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")));

but it is giving the error message:

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

someone knows what to do?

4

1 回答 1

4

您当前正在创建一个包含字符串的阅读器

"C:/xml/41111208890622000144550010000000011000003066-nfe.xml"

并要求将DocumentBuilder其解析为 XML,但显然不是。(我指的是第二个parse调用,我怀疑它是您实际代码中的那个。您提供的代码不会像您document两次声明的那样编译。)

您可以创建一个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 APIs 对此很好,有些则不然。)如果它不起作用,请尝试使用该file://方案:

Document document = db.parse("file://C:/xml/...");
于 2013-07-30T15:12:42.750 回答