因由:做一个程序,过程中需要解析自定义的xml文件(utf-8)编码
问题:解析过程中出现Content is not allowed in prolog 异常
详细:
又是啃爹的字符集问题
又是可恶的xml操作
又是同软件版本有关
这个问题的原因大意,可以看下面文章:
http://weishuwei.iteye.com/blog/42872
如果解析xml的程序是dom4j,可以通过升级最新版本解决。
如果不是dom4j,可以尝试修改文件的编码,并去除BOM解决。
我的问题是,我不是用dom4j,尝试修改文件编码也不行。
这里只列出xstream的解决方案,其它的也可以顺推解决:
//构建对象,这里无啥问题,
//用什么构造函数、构造参数都可以
XStream xstream = new XStream(new DomDriver());
//下面是重点!!!
InputStream is = new FileInputStream(new File(configFilePath));
try {
Object object = xstream.fromXML(is);
System.out.println(object);
} finally {
is.close();
}
xstream.fromXML有多个重载方法,而这些方法,除inputSteam的参数版本外,其它的都不能成功通过。
原因分析:
经过查看源代码(当然,只看关键的),发现其他重载方法会使用reader对象。懂了吧,reader是读取一行的,自然地会跟BOM扯上关系!!!而我最后用的是流,HOHO~万能的流啊,解决了。
有人说,new XStream时,使用 Dom4jDriver不能解决吗?不是最新版dom4j就ok了吗?
明显地不是,这个跟dom4j无啥关系,关键是xstream用那种方式使用dom4j,如果是用reader,那问题依然是无解决的。
懂了吧~其它类似问题,都可以通过使用流的方式解决(推理而已)。
分享到:
相关推荐
xstream、dom4j、groovy、jdom解析xml,所给的xml的例子比较全吧,基本搞懂了这些,这四种解析就差不多了
dom4j,jsoup,jdom,w3cdom,xstream使用代码工程 package ivyy.taobao.com.dom4j; import ivyy.taobao.com.entity.Address; import ivyy.taobao.com.entity.Location; import ivyy.taobao.com.entity.Point; import ...
dom4j用于解析xml 文档,而XStream则是将Java对象转成xml文件。使用这两个工具就很好的解决了xml文件的解析与Java对象转成xml的麻烦了!
解压后有一个文件夹(包含了dom4j和XStream的简单示例),一个dom4j.jar(用dom4j只需要把这个添加到项目里面),一个xstream-1.4.8的jar包、源码、说明文档.zip(用xstream就解压这个包然后放到项目里面)
将对象(java bean)转换为xml字符串
xStream xml to bean,使用xStream 互转 xml 、bean. 的一个工具类。
dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。dom4j是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件,可以在SourceForge上找到它。...
xstream 1.3.1.jar bean对象转换为xml
基于XStream,DOM4J实现xml多种工具类,项目中jar包已齐全 可直接运行。希望对大家有所帮助
一个小demo展示xml的两种解析方式和四种解析方法,以及使用XStream进行javaBean与xml、json之间的转换
使用dom4j高效率xml解析,内涵demo程序,idea导入即可运行,适用于各种复杂xml的解析,给自己留作备份,有需要可下载。
java转换XML的必须要的包,总共三个,分别包括XStream.jar,dom4j.jar和xpull/xpp.jar包。
由于先前有已经有上传过dom4j和xtream的两个jar包了,但最近看到之前那个下载积分变成27了,这可能是csdn的bug,我原先都是定义1个积分,因为csdn现在没有0积分了,最低就是1积分!
dom+xstream, dom4j解析xml,没有多余的东西,解压即用,两个版本是ok的, dom4j是1.6.1,xstream是1.3.1
微信开发用到的jar包:json 解析(json-lib-2.4-jdk15.jar),dom4j-1.6.1.jar,xstream-1.3.1.jar
dom4j解析XML的两个JAR包,分别是dom4j-1.6.1.jar、jaxen-1.1.1.jar
webService接口对接时,需要传递一个xml内容。用xStream拼接xml
使用 XStream 不用任何映射就能实现多数 Java 对象的序列化。在生成的 XML 中对象名变成了元素名,类中的字符串组成了 XML 中的元素内容。使用 XStream 序列化的类不需要实现 Serializable 接口。XStream 是一种序列...
JavaXml及Bean互转,内有xstream集成bean、xml互转工具类,JAXB注解实现bean、xml互转工具类
xStream完美转换XML、JSON,包括XML转换成对象,以及对象转换成XML,以及对象转换成JSON,以及注意事项