JavaparsingXML文档给“内容不允许在序言。”错误

我正在用Java编写一个程序,它接受一个自定义XML文件并对其进行parsing。 我正在使用XML文件进行存储。 我在Eclipse中得到以下错误。

[Fatal Error] :1:1: Content is not allowed in prolog. org.xml.sax.SAXParseException: Content is not allowed in prolog. at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:239) at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:283 ) at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:208) at me.ericso.psusoc.RequirementSatisfier.parseXML(RequirementSatisfier.java:61) at me.ericso.psusoc.RequirementSatisfier.getCourses(RequirementSatisfier.java:35) at me.ericso.psusoc.programs.RequirementSatisfierProgram.main(RequirementSatisfierProgram.java:23 ) 

包含XML文件的开始部分:

 <?xml version="1.0" ?> <PSU> <Major id="IST"> <name>Information Science and Technology</name> <degree>BS</degree> <option> Information Systems: Design and Development Option</option> <requirements> <firstlevel type="General_Education" credits="45"> <component type="Writing_Speaking">GWS</component> <component type="Quantification">GQ</component> 

该程序能够读取XML文件,但是当我调用DocumentBuilder.parse(XMLFile)来获得一个parsing的org.w3c.dom.Document ,我得到上面的错误。

在我的XML文件的序言中,我没有看到有无效的内容。 我无法弄清楚什么是错的。 请帮忙。 谢谢。

请检查xml文件是否有像这样的垃圾字符。如果存在,请使用以下语法删除它。

 String XString = writer.toString(); XString = XString.replaceAll("[^\\x20-\\x7e]", ""); 

确保XML文件的开头没有隐藏的空白。 也可能在节点中包含编码=“UTF-8”(或16?无线索)。

我认为这也是这个问题的一个解决scheme。

将文档types从“UTF-8编码”更改为“不使用BOM编码UTF-8”

我通过做同样的改变解决了我的问题。

该文件看起来不错,但我怀疑它包含不可见的字符。 在hex编辑器中打开它,检查第一个“<”之前是否真的没有任何东西。 确保XML标题中的空格是空格。 也许删除“?>”之前的空格。 检查使用哪些换行符。

确保文档是正确的UTF-8。 有些窗口编辑器将文档保存为UTF-16(即每个第二个字节为0)。

我假设你有正确的XML编码和与架构匹配。

如果仍然出现这个错误,请检查解开所使用的xml和inputtypes的代码。 由于XML文档声明了自己的编码,所以最好从InputStream而不是Reader中创build一个StreamSource对象,以便XML处理器可以正确处理声明的编码[参考手册:简明Java]

希望这可以帮助!

您没有提供该文件的正确地址。 您需要提供诸如C:/Users/xyz/Desktop/myfile.xml的地址

如果你能够控制XML文件,尝试添加更多的信息到文件的开头:

 <?xml version="1.0" encoding="UTF-16" standalone="no"?> 

检查XMl文件中的任何语法问题。 我在使用Cocoon的xsl / xsp上工作时发现了这个错误,我使用一个不存在的节点或类似的东西来定义一个variables。 检查整个XML。