【发布时间】:2020-01-20 09:14:50
【问题描述】:
我正在使用 Primefaces <p:fileUpload> 组件供用户选择文件。
其中,我使用fileUploadListener 属性,该属性使用自定义方法读取XML 文件并使用DOMParser 解析它们。我的文件读取和解析代码归结为:
InputStream inputStream = new FileInputStream("C:\\test\\test_ansi.xml");
Reader inputStreamReader = new InputStreamReader(inputStream, StandardCharsets.UTF_8);
InputSource is = new InputSource(new BufferedReader(inputStreamReader));
DOMParser parser = new DOMParser();
parser.parse(is);
Document doc = parser.getDocument();
在进一步处理它们之前,我需要将所有用户选择的 XML 转换为 UTF-8。 如果我使用编码为 ANSI 的文件尝试上述代码,则它可以正常工作。但如果文件编码为 UTF-8,我会收到以下错误:
oracle.xml.parser.v2.XMLParseException; lineNumber: 1; columnNumber: 1; Start of root element expected.
at oracle.xml.parser.v2.XMLError.flushErrors(XMLError.java:233)
at oracle.xml.parser.v2.XMLError.error(XMLError.java:133)
at oracle.xml.parser.v2.XMLError.error(XMLError.java:171)
at oracle.xml.parser.v2.NonValidatingParser.parseRootElement(NonValidatingParser.java:280)
at oracle.xml.parser.v2.NonValidatingParser.parseDocument(NonValidatingParser.java:241)
at oracle.xml.parser.v2.XMLParser.parse(XMLParser.java:124)
对于示例 UTF-8 文件,我只是将编码为 UTF-8 的文件保存在记事本中。 任何人都可以帮助我了解发生了什么问题吗?
【问题讨论】:
-
请提供test_ansi.xml文件的内容。
-
@olgacosta 就是这么多:
<Vehicles> <vehicle> <name>car</name> <wheels>4</wheels> </vehicle> <vehicle> <name>bike</name> <wheels>2</wheels> </vehicle> </Vehicles>
标签: java xml dom xml-parsing