Java解析XML文档给出了“prolog中不允许的内容”错误
我正在用Java编写一个程序,它接受一个自定义XML文件并对其进行解析。我正在使用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>B.S.</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)
以获取已解析的org.w3c.dom.Document
时,会出现上述错误
在我看来,XML文件的序言中似乎没有无效内容。我想不出是怎么回事。请帮忙。谢谢
# 1 楼答案
您没有为文件提供正确的地址。您需要提供一个地址,例如
C:/Users/xyz/Desktop/myfile.xml
# 2 楼答案
我认为这也是这个问题的解决方案
将文档类型从“UTF-8编码”更改为“不带BOM的UTF-8编码”
我通过做同样的改变解决了我的问题
# 3 楼答案
请检查xml文件是否有这样的垃圾字符�.如果存在,请使用以下语法删除
# 4 楼答案
这份文件在我看来很好,但我怀疑它包含看不见的字符。在十六进制编辑器中打开它,检查在第一个“<;”之前是否真的没有任何内容。确保XML标题中的空格是空格。可能会删除“?>;”之前的空格。检查使用了哪些换行符
确保文件是正确的UTF-8。一些windows编辑器将文档保存为UTF-16(即每秒字节为0)
# 5 楼答案
我假设您有正确的xml编码并与模式匹配
如果仍然出现此错误,请检查取消对所使用的xml和输入类型进行打包的代码。因为XML文档声明自己的编码,所以最好从InputStream而不是从读取器创建StreamSource对象,这样XML处理器就可以正确处理声明的编码[Ref Book:Java in a Nutshell]
希望这有帮助
# 6 楼答案
确保XML文件开头没有隐藏的空白。也可以在节点中包含encoding=“UTF-8”(或16?无线索)