JavaWeb - Content is not allowed in prolog

Posted 放羊的牧码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaWeb - Content is not allowed in prolog相关的知识,希望对你有一定的参考价值。

Web项目在启动的时候报Content is not allowed in prolog错误,后经检查发现是web项目在使用dom4j/sax 读取一个xml文件时报错。原因如下

BOM(Byte Order Mark),是UTF编码方案里用于标识编码的标准标记,在UTF-16里本来是FF FE,变成UTF-8就成了EF BB BF。这个标记是可选的,因为UTF8字节没有顺序,所以它可以被用来检测一个字节流是否是UTF-8编码的。微软做这种检测,但有些软件不做这种检测,而把它当作正常字符处理。

微软在自己的UTF-8格式的文本文件之前加上了EF BB BF三个字节, windows上面的notepad等程序就是根据这三个字节来确定一个文本文件是ASCII的还是UTF-8的, 然而这个只是微软暗自作的标记, 其它平台上并没有对UTF-8文本文件做个这样的标记。

由于windows平台把utf-8 格式的文件在前边加了 EF BB BF三个字节 ,而dom4j 不认这些!所以可以使用ue或Notepad++打开xml 文件,另存为"utf-8 无bom" 替换项目中的文件,重新编译一下问题解决。

  • Ps:以上是一种情况发生,如果确保不是编码上的问题,那很可能是你的 XML 内容本身存在语法问题,至少我自己是这种情况!

以上是关于JavaWeb - Content is not allowed in prolog的主要内容,如果未能解决你的问题,请参考以下文章

JavaWeb - Content is not allowed in prolog

RuntimeWarning: coroutine 'script' is never awaited content = str(content) if content is not None el

后台异常 - Content is not allowed in prolog

Configuration Error: deployment source ‘pro07-javaweb-begin:Web exploded‘ is not valid

Configuration Error: deployment source ‘pro07-javaweb-begin:Web exploded‘ is not valid

Configuration Error: deployment source ‘pro07-javaweb-begin:Web exploded‘ is not valid