Exception: Content is not allowed in prolog-搜集

2023-11-16

用webwork验证时老发生错误,提示Content is not allowed in prolog,由于是解析xml文件出错,找到相应的文件一看,发现开头有几行汉字说明忘注释掉了,我把它们注释掉,问题得到解决,由于以前没遇到这种问题,于是到网上找到如下资料:
DOM4j 读取xml文件可能会抱错:Content is not allowed in prolog异常的原因
该xml是UTF-8编码的,如果该文件通过Ultraedit编辑后,会在无BOM头的UTF-8文件中加入BOM,但是DOM4j不认这个BOM(dom4j1.3),解决的办法可以通过升级dom4j到1.6解决www.dom4j.org
什么是BOM?http://www.unicode.org/faq/utf_bom.html#22

Unicode规范中有一个BOM的概念。BOM——Byte Order Mark,就是字节序标记。在这里找到一段关于BOM的说明:

在UCS 编码中有一个叫做"ZERO WIDTH NO-BREAK SPACE"的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前,先传输字符"ZERO WIDTH NO-BREAK SPACE"。这样如果接收者收到FEFF,就表明这个字节流是Big-Endian的;如果收到FFFE,就表明这个字节流是Little-Endian的。因此字符"ZERO WIDTH NO-BREAK SPACE"又被称作BOM。

UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式。字符"ZERO WIDTH NO-BREAK SPACE"的UTF-8编码是EF BB BF。所以如果接收者收到以EF BB BF开头的字节流,就知道这是UTF-8编码了。

Windows就是使用BOM来标记文本文件的编码方式的。

另外unicode网站的FAQ-BOM详细介绍了BOM。官方的自然权威,不过是英文的,看起来比较费劲

===============================================

看到一篇关于在eclipse中使用ant构建java项目的文章,就按照文章中的说明新建了一个项目,并新建了classes,dist,doc,lib几个文件夹和build.xml文件。其中build.xml文件的内容也是直接复制的,由于是从网页上直接复制的,里面“<”“>”都是中文格式的,我就把这些给替换了一下。
         但当选中项目,然后选择“Project”,“Properties”,“Builders”,“New…”,选择“Ant Build”:载入“Bulidfile”时提示“Content is not allowed in prolog”错误。    
         我就去Google上转了一圈,还有点收获,看了一篇小文章,觉得可能是build.xml文件格式的错误。

In SGML and XML, a document is composed of two sequential parts,
the prolog and the instance. You can see this in an HTML example:

<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN "
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd " 
>
< html  xmlns = "http://www.w3.org/1999/xhtml "   >
< head  >
< title  > The Symbol Grounding Problem  </ title  >
</ head  >
< body  >
</ body  >
</ html  >

In this example, the prolog is lines 1-2, the instance begins on
line 3. The prolog includes the DOCTYPE declaration, the external
subset (called the DTD), and the internal subset (which you seldom
see but it 's legal). The document instance includes the document
element (in this case 
< html  >  and all of its descendent content).

You generally don 't want to see the prolog, and you generally don 't
want to store it. The DOCTYPE declaration provides references to
DTD, which is instantiated as part of the process of validating the
document. You may want to store the reference(s), but you wouldn 't
want to store the DTD each time you store the document, as that
would be a real waste (the DTD is often bigger than the document).

It sounds like your well-formed and valid document isn 't being
considered as such by the XML processor. The error message indicates
that there is content (i.e., either elements or character data) in
the part of the document considered as the prolog. You may be missing
the last " > " on line 2 above, as that would normally be the beginning
of the internal subset. If it found " 
< html  " (or something similar),
you might get that error.
果然,有两个“!”是中文状态,改过来就ok 了。
-----------------------------------------------------------------------------------------------------------------------------------------------

在用UltraEdit 编写hibernate的映射文件时,发现UltraEdit会自动向UTF8编码的文件的最开头,加入一个特殊字符。这在UltraEdit中是看不到的,在别的编辑器中可以看到。当使用dom4j解析文件时,出现content is not allowed in prolog错误。用别的编辑器去掉这个字符,错误就可以修正。

应该换一个 xml 解析器。 utf-8 文件头是 unicode 标准的,在 xml 标准中也提到过。有一部分 java 写的 xml 解析器比较烂,不认识这种文件头。但是比较好的解析器都认识。比如 apache 的解析器。

------------------------------------------------------------------------------------------------------------------

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Exception: Content is not allowed in prolog-搜集 的相关文章

随机推荐

  • 让你久等了《开源安全运维平台OSSIM疑难解析--入门篇》正式出版

    2019年暑期 众所期待的新书 开源安全运维平台OSSIM疑难解析 入门篇 由人民邮电出版社正式出版发行 此书从立意到付梓 历时超过两年 经过数十次大修 历经曲折与艰辛 希望为大家代奉献一本好书 愿这本书能陪伴OSSIM用户一起进步一起成长
  • 结构化设计和模块设计

    结构化设计 结构化设计包括架构设计 接口设计 数据设计和过程设计等任务 它是一种面向数据流的设计方法 是以结构化分析阶段所产生的成果为基础 进一步自顶而下 逐步求精和模块化的过程 1 概要设计与详细设计的主要任务 概要设计阶段的主要任务是设
  • Java 15中的隐藏类是咋回事?

    Java 从1 1 版就有匿名类 但是 匿名类并不是匿名的 你不需要为它们命名 它们是由 Java 编译器命名的 如果你熟悉命令javap 则可以 反汇编 JAR 文件并查看编译器为匿名类生成的名称 Java 15 引入了没有名称的隐藏类
  • ModuleNotFoundError: No module named ‘rosbag‘

    1 ModuleNotFoundError No module named rosbag File opt ros kinetic lib python2 7 dist packages roslib launcher py line 42
  • 数字图像处理中一元函数f(x)的二阶导数=f(x+1)+f(x-1)-2f(x)的由来

    在 为什么说数字图像的一阶微分为f x 1 f x 介绍了数字图像处理中一元函数的一阶导数的由来 该一阶导数为 在该书中 同时定义了一元函数f x 其二阶导数的基本定义为 关于这个推导其中有点点小技巧 式3 6 1也可以表述为 f x f
  • C++基础——初始化列表

    目录 一 初始化列表 1 列表格式 情况1 成员变量中有const成员 但列表处成员不被初始化时 情况1 成员变量中有const成员 给缺省值时 情况1 成员变量中有const成员 列表处成员不仅初始化 还有缺省值 情况2 成员是自定义类型
  • WinCE 下 RAS 拨号连接的建立和拨号过程

    在 CE 下如果系统没有建立拨号网络 要实现上网功能时 就需要通过代码来实现建立拨号网络 拨号实现上网的过程 以下代码中的参数和拨号所用数值 都是电信 EVDO 的配置 如果换 GSM 或 WCDMA 时 请相应修改 cpp view pl
  • PHP学习笔记 Win平台下PHP开发环境的搭建

    Win平台下PHP开发环境的搭建 本文参考了PHP官方文档 http php net manual zh install windows iis7 php 写成 如果需要了解详细信息 请直接参考PHP官方文档 下载并配置PHP 下载PHP
  • 第十四届蓝桥杯模拟赛(第三期)试题与题解 C++

    目录 一 填空题 一 最小的十六进制 答案 2730 二 Excel的列 答案 BYT 三 相等日期 答案 70910 四 多少种取法 答案 189 五 最大连通分块 答案 148 二 编程题 一 哪一天 二 信号覆盖 三 清理水草 四 最
  • 关于我写了三万字博客后悔了好久这件事之第二个三万字GUI(swing)

    目录 简介 使用Swing的优势 Swing的特征 Swing基本组件的用法 Swing组件层次 AWT组件的Swing实现 简单了解swing JFrame 弹窗 标签 面板 按钮 3 6 列表 3 7 文本框 JTree TreeMod
  • java的静态与非静态 及其代码演示示例

    静态与非静态的概念 运行Java应用程序时 在实际的代码运行之前的一个步骤是加载类 具体点说 在Java SE 8的JVM中 需要先把类加载到Metaspace 如果类中有静态成员 加载类时会在heap中为其分配空间 此空间是属于类的 类中
  • colab 跑 deformable-detr 记录:

    GPUS PER NODE 1 tools run dist launch sh 1 configs r50 deformable detr sh 报错 cannot import name NewEmptyTensorOp from to
  • ChatGPT能够识别并纠正错误吗?

    ChatGPT在一定程度上可以识别和纠正错误 但其能力有限 以下是对ChatGPT识别和纠正错误能力的详细分析 1 基于模型训练的纠错 ChatGPT模型是通过大规模的训练数据进行训练的 这些训练数据通常是从互联网上收集的文本数据 在这个过
  • C++ 时间函数gmtime、gmtime_r、localtime、localtime_r

    测试环境 vmware 7 Redhat5 5 系统时间使用UTC 时区为上海 1 函数功能介绍 使用man gmtime或man localtime都可以的得到这几个函数的介绍 原型如下 struct tm gmtime const ti
  • JS特性

    JS是解释型语言 不需要提前预编译 JS是弱类型语言 在定义变量的时候不需要定义变量的类型 变量是松散类型 即可以用来保存任何类型的数据 JS没有块作用域 if for都是块 但有函数作用域 JS重复定义变量并不会报错 定义的新变量的值会覆
  • AQS原理 自己浅显理解

    http ifeve com java special troops aqs 这篇博客讲的很好 通篇看完收获不少 精简一下自己的收获 1 AQS是一个基于状态 state 的链表管理方式 reentracntlock这个锁是基于AQS实现的
  • shell-循环语句和case分支

    一 if 循环 if 条件 then 执行内容 elif then 执行内容 else 执行内容 fi 或者 if 条件 then 执行内容 else 执行内容 fi 例 chmod x 脚本名 给与执行权限 二 case 分支 case
  • 1-2、如何学习Linux

    1 2 如何学习Linux 版本说明 版本 作者 日期 备注 0 1 loon 2018 12 6 初稿 目录 文章目录 1 2 如何学习Linux 版本说明 目录 一 前言 二 如何学习Linux 三 最后 一 前言 注意 这里不是要教你
  • 一个人走的快,一群人才走的远

    有太多的技术文章来指引我们解决技术痛点问题 但很少有文字来帮助我们解答个人成长 职业发展 持续学习等思维意识层面的问题 07年计算机专业毕业后 抱着无限的迷茫踏上了漫漫职业生涯路 从菜鸟做起 一路走来也是跌跌撞撞 诚惶诚恐 很多时候都在想
  • Exception: Content is not allowed in prolog-搜集

    用webwork验证时老发生错误 提示Content is not allowed in prolog 由于是解析xml文件出错 找到相应的文件一看 发现开头有几行汉字说明忘注释掉了 我把它们注释掉 问题得到解决 由于以前没遇到这种问题 于