因由:做一个程序,过程中需要解析自定义的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,那问题依然是无解决的。
懂了吧~其它类似问题,都可以通过使用流的方式解决(推理而已)。
分享到:
相关推荐
本主题聚焦于四种不同的Java库——XStream、Dom4j、Groovy以及JDOM,它们都是用来解析和操作XML文档的工具。 1. **XStream**: XStream是一个Java库,它提供了将Java对象序列化为XML,以及从XML反序列化回Java对象...
DOM4J是一个非常灵活且功能丰富的XML处理库,它提供了多种方式来操作XML文档,包括读取、写入、修改和查询。以下是DOM4J的主要知识点: 1. **DOM4J架构**:DOM4J基于事件驱动和SAX的解析器,同时也支持DOM和DOM4J...
XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于配置文件、数据交换、文档存储等...在实际开发中,根据具体场景选择合适的方法,结合DOM4J提供的工具类,可以大大提高XML处理的效率和便捷性。
XStream和DOM4J是Java中处理XML的两个重要库,它们各自有着独特的特性和优势。 **XStream** XStream是一款开源的Java库,它将Java对象与XML进行相互转换。它的主要优点在于使用简单,通过简单的API即可实现对象到...
在Java开发中,有时我们需要将Java Bean对象转换成XML字符串,以便于数据交换或存储。XStream库就是这样一个工具,它提供了一种简单且高效的方式来实现这个目标。XStream不仅能够将Java对象转换为XML,还可以反向将...
在这个场景中,我们关注的是使用DOM4J库进行XML处理。DOM4J是一个强大的Java库,它提供了丰富的API来处理XML,包括读取、写入、修改以及XPath查询。DOM4J在设计上考虑了灵活性和效率,使得开发者可以更方便地处理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和XStream的简单示例),一个dom4j.jar(用dom4j只需要把这个添加到项目里面),一个xstream-1.4.8的jar包、源码、说明文档.zip(用xstream就解压这个包然后放到项目里面)
在`xmlAnalysis`文件夹中,可能包含了一个简单的Java程序,演示了如何使用DOM、SAX、StAX和XStream解析XML文件,并展示了XStream如何在JavaBean与XML之间进行转换。你可以运行这些代码,观察输出结果,以加深理解。...
这个工具类的目标就是利用xStream的功能,方便地将XML文档转换为Java Bean对象,以及将Bean对象转换为XML字符串。 xStream的核心思想是通过反射和类型映射来实现对象与XML之间的转换。它使用一种称为“annoation”...
DOM4J是一个非常优秀的Java XML API,它提供了全面而强大的DOM、SAX和JDOM的集成。在微信开发中,可能需要处理XML格式的微信API响应或配置文件。DOM4J提供了一种灵活的方式来读取、创建、修改和操作XML文档,比如...
DOM4J是另一个流行的Java XML处理库,它扩展了DOM模型,提供了更方便和高效的API。DOM4J 1.6.1版本是一个成熟的、高性能的框架,适用于XML的读写、遍历、查询和修改。它支持XPath表达式,可以方便地查找和操作XML...
DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活且高效的API,使得XML的解析、创建、修改和查询变得简单。DOM4J在Java社区中被广泛使用,尤其是在那些需要处理大量XML数据的应用中。这个压缩包包含两个...
XStream 是一个强大的Java库,它能够将Java对象序列化为XML,并且可以从XML反序列化回Java对象。在标题和描述中提到的"1.3.1.jar"是XStream的一个特定版本号,表示该库的一个稳定发行版。在这个版本中,XStream提供...
xStream简化了Java对象与XML之间的转换,使得在处理XML数据时,开发者无需关注底层的XML构造细节。在Web Service接口对接时,如果需要传递XML内容,使用xStream可以高效、便捷地完成XML的拼接。通过合理配置和使用,...
这三个库在Java XML处理中扮演着不同的角色:XStream提供了对象到XML的序列化和反序列化,dom4j提供了强大的XML文档操作能力,而XPP3作为基础解析器,确保了高效的数据读取。在开发过程中,根据需求选择合适的库组合...
dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。dom4j是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件,可以在SourceForge上找到它。...
在Java开发中,数据序列化和XML处理是常见的任务,涉及到与JSON和XML格式的数据交互。本讲将探讨五个关键的库:DOM4J、Jaxen、XStream、FastJson和Gson,它们分别在XML解析和JSON操作中扮演着重要角色。 1. DOM4J:...
**dmo4j** 是一个强大的Java XML处理库,它提供了一种灵活且高性能的方式来读取、写入、操作和查询XML文档。dmo4j的功能主要包括: 1. **解析XML文档**:dom4j能够快速地将XML文件加载成Document对象,方便后续的...
**正文** XML(eXtensible Markup Language)是一种标记语言,广泛用于数据交换和文档存储。在Java中,处理XML的库有很多,其中Dom4j是一个功能强大且...在Java项目中,掌握Dom4j的使用能极大地提高XML处理的效率。