org.xml.sax.SAXParseException: XML 声明可能只能从实体开始。

04-10-11 zb1015
org.xml.sax.SAXParseException: XML 声明可能只能从实体开始。
是不是说明,xml档不正确呢?

banq
2004-10-11 11:03
不一定,IE浏览器阅读XML经常出现这个问题。需要规定DTD

zb1015
2004-10-11 15:21
是这样的,读取正确xml是没有问题的,但是现在调用另一方的url接口时,在IE中是确实是xml格式的,但是读到inputstream时sax解析就出错了。

但现在这个问题,是我这边的错误,还是另一方的错误呀,真是烦死了。

napoleonn
2004-10-18 16:51
xml中间出现特殊字符 比如url中非常普遍的 & 就会出现这样的解析错误,解决方法是必须用 & 来代替 & 才会解析通过。

我今天在用hibernate的时候,写hibernate.cfg.xml配置文件的时候,写jdbc connection url 由于要配置mysql jdbc驱动使用utf8,所以我的url这么写的:jdbc:mysql://localhost:3306/gpms?useUnicode=true&characterEncoding=utf8
结果运行时候hibernate出现错误,实际是dom4j出现解析错误,幸好hibernate的log相当详细。

2004-10-18 16:36:03 net.sf.hibernate.cfg.Configuration getConfigurationInputStream
信息: Configuration resource: /hibernate.cfg.xml
2004-10-18 16:36:04 net.sf.hibernate.util.XMLHelper$ErrorLogger error
严重: Error parsing XML: /hibernate.cfg.xml(10) 下一个字符必须是";" 终止引用实体 "characterEncoding"。
2004-10-18 16:36:04 net.sf.hibernate.cfg.Configuration doConfigure
严重: problem parsing configuration/hibernate.cfg.xml
org.dom4j.DocumentException: Error on line 10 of document : 下一个字符必须是";" 终止引用实体 "characterEncoding"。 Nested exception: 下一个字符必须是";" 终止引用实体 "characterEncoding"。
at org.dom4j.io.SAXReader.read(SAXReader.java:355)

很显然问题就是这个& 字符,这时才想起来&是特殊字符,用&;代替就可以了。

napoleonn
2004-10-18 16:56
晕死,用& 代替&
网页上写一个& amp;真费劲啊。

napoleonn
2004-10-18 16:58
&amp 总算写成了

zb1015
2004-10-19 14:31
你的意思是先把inputstream转成string,用replace方面换完后,在转成流是吗?

sunboysun
2005-09-14 17:38
我从url获得xml文件,然后转换到本地,但是百度的rss有的有时候就不能打开,新浪的就没有问题,提示的错误是expected character in cdata at '?(\uffd),请指点

玄道初成
2005-09-19 14:43
> org.xml.sax.SAXParseException: XML
> 声明可能只能从实体开始。
> 是不是说明,xml档不正确呢?

我也遇到了这种情况,最后一查多了个空格,我估计主要原因就是xml格式不正确。。