时间:2021-05-20
报错内容为:
Content is not allowed in prolog. Nested exception: Content is not allowed in prolog
网上所述总结来说就是解析内容内包含BOM。这个标记是看不到的,流里面有这个标记而已。
BOM:Byte Order Mark,中文名字节顺序标记。UCS规范建议在传输字节流前,先传输BOM来判断字节顺序。
其实UTF-8是不需要用BOM来表明字节顺序的,但是可以 用BOM来表明编码方式。BOM的UTF-8编码是EF BB BF,所以呢,如果接受者收到EF BB BF开头的字节流,就说明它是UTF-8编码了。
解决办法:
如果解析的是文件:
可以用UltraEdit或者EmEditor打开XML,然后另存为,保存的时候有选项是以无BOM的UTF-8保存还是以有BOM的UTF-8保存。
如果是从远程请求回来的内容:
那么你把返回的流New为字符串,是看不到BOM的,但是你必须截取你需要的内容:
if(null != result && !"".equals(result)){ if(result.indexOf("<") != -1 && result.lastIndexOf(">") != -1 && result.lastIndexOf(">") > result.indexOf("<")) result = result.substring(result.indexOf("<"), result.lastIndexOf(">") + 1); }也有说是DOM4J版本较低引起的,但是我看了一下我是用的版本是1.6.1,所以排除此类可能,但是在实际中我还是建议使用最新稳定版本来进行开发。
更新
今天看日志,发现我的异常不是因为BOM头引起的,幸好我也打印了收到的内容,我一看,我去,服务器在自己处理失败以后直接返回个 error字符串,mian了一下,果然出错,这坑爹的玩儿。
public static void main(String[] args) throws DocumentException { String str = "error"; Document doc = DocumentHelper.parseText(str); System.out.println(doc.asXML()); }以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
问题你想解析某个XML文档,文档中使用了XML命名空间。解决方案考虑下面这个使用了命名空间的文档:DavidBeazleyHelloWorldHelloWorl
1.xml文件代码${fq.content}${fq.time}2.XML网页效果图3.Android代码1.布局文件2.java代码DOM解析代码public
XML解析:*解析xml可以做:*如果xml作为配置文件:读取*如果xml作为传输文件:写,读xml解析思想:*DOM:将文档加载进内存,形成一颗dom树(do
问题你想使用一个Python字典存储数据,并将它转换成XML格式。解决方案尽管xml.etree.ElementTree库通常用来做解析工作,其实它也可以创建X
其实解析xml文件有四种方式:DOM,JDOM,DOM4J,SAX。我们来说与平台无关的两种官方解析方式:DOM和SAX一、DOM解析在Java代码中,xml文