zoukankan      html  css  js  c++  java
  • DOM解析XML报错:Content is not allowed in prolog

    报错内容为:

    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,所以排除此类可能,但是在实际中我还是建议使用最新稳定版本来进行开发。

  • 相关阅读:
    bzoj3653: 谈笑风生
    bzoj1858: [Scoi2010]序列操作
    bzoj1857: [Scoi2010]传送带
    bzoj1856: [Scoi2010]字符串
    bzoj1855: [Scoi2010]股票交易
    bzoj1854: [Scoi2010]游戏
    bzoj1853: [Scoi2010]幸运数字
    斜堆,非旋转treap,替罪羊树
    NOI2003 文本编辑器
    A_star poj2449 k短路
  • 原文地址:https://www.cnblogs.com/kissfu/p/6207117.html
Copyright © 2011-2022 走看看