atitit.XML类库选型及object 对象bean 跟json转换方案
atitit.XML类库选型及object对象bean跟json转换方案
1.XML类库可以分成2大类。标准的。这些类库通常接口和实现都是分开的 1 2.常见的xml方面的方法 2 2.1.xml解析 2 2.2.bean与xml互相转换 2 2.3.json与xml的互相转换 2 3.大名鼎鼎的DOM绿色环保的SAX默默无闻的Digester 2 3.1.默默无闻的Digester:XML的JavaBean化 2 4.Digester解析XML 3 5.xerces_百度百科 4 5.1.jdom 4 5.2.dom4j 4 5.3.XStream 4 6.bean对象object互相转换xmlXStream 5 6.1.map转换xml 5 7.json转换xmlnet.sf.json.JSONObject 6 7.1.json2xml法2(马验证)..org.json包 7 8.参考 7
1.XML类库可以分成2大类。标准的。这些类库通常接口和实现都是分开的
作者::老哇的爪子Attilax艾龙,EMAIL:1466519819@qq.com 转载请注明来源:http://blog.csdn.net/attilax 2.常见的xml方面的方法2.1.xml解析2.2.bean与xml互相转换2.3.json与xml的互相转换
3.大名鼎鼎的DOM绿色环保的SAX默默无闻的Digester3.1.默默无闻的Digester:XML的JavaBean化Digester是apache基金组织下的一个开源项目,笔者对它的了解源于对Struts框架的研究,是否有很多程序员想要一解各大开源框架的设计甚至想要自己写一个功能强大的框架时会碰到这样一个难题:这些形形色色的用XML语言标记的框架配置文件,框架底层是用什么技术来解析呢?DOM解析耗费时间,SAX解析又过于繁琐,况且每次解析系统开销也会过大,于是,大家想到需要用与XML结构相对应的JavaBean来装载这些信息,由此Digester应运而生。它的出现为XML转换为JavaBean对象的需求带来了方便的操作接口,使得更多的类似需求得到了比较完美的解决方法,不再需要程序员自己实现此类繁琐的解析程序了。 与此同时SUN也推出了XML和JavaBean转换工具类JAXB,有兴趣的读者可以自行了解。 Digester/JAXB 优缺点:由于其是在上述两者的基础上衍生出来的工具类,为的是满足将XML转换为JavaBean的特殊需求,故而没有什么特别明显的优缺点。作为大名鼎鼎的开源框架Struts的XML解析工具Digester,为我们带来了将XML转换为JavaBean的可靠方法。 适用范围:有将XML文档直接转换为JavaBean需求。
4.Digester解析XML为了满足将XML转换为JavaBean的特殊需求,Apache旗下的一个名为Digester的工具为我们提供了这么一个选择。由于最终是将XML转化为JavaBean存储在内存当中,故而解析性能等方面其实与使用者并没有多大关系。解析的关键在于用以匹配XML的模式以及规则等,由于该工具较为复杂,限于篇幅,作者只能给予简单的介绍。 下面是一个Digester解析XML的例子片段: 1.//定义要解析的XML的路径,并初始化工具类 2.Fileinput=newFile("books.xml"); 3.Digesterdigester=Digester(); 4. 5.//如果碰到了<books>这个标签,应该初始化test.myBean.Books这个JavaBean并填装相关内容6.digester.addObjectCreate("books","test.myBean.Books"7.digester.addSetProperties(); 8.//如果碰到了<books/book>这个标签,同上初始化test.myBean.Book这个JavaBean9."books/book""test.myBean.Book"10.11.//通过调用上面已经初始化过的JavaBean的addBook()方法来把多个<books/book>加到一个集合中12.digester.addSetNext("addBook"13.14.//定义好了上面的解析规则后,就可以开始进行解析工作了15.Booksbooks=(Books)digester.parse(input); 上述代码简单的向读者展示了Digester处理XML的一些要点,主要是说明了一些模式以及规则的匹配。简言之,Digester就是一种用来把一个XML转化为一个与该XML结构类似的JavaBean。你可以把XML根元素想象成一个JavaBean,该根元素的attribute就是这个JavaBean的各种Field,当该根元素有其他子tag时,又要把这个子tag想象成一个个新的XML,将其视为一个新的JavaBean,并作为一个Field加入到父Bean当中,然后以此类推,通过循环的方式将整个XML进行解析。
5.xerces_百度百科Xerces是由Apache组织所推动的一项XML文档解析开源项目 百度为您找到相关结果约1,560,000个
5.1.jdom百度为您找到相关结果约240,000个 4.JDOM生成和解析XML 为减少DOM、SAX的编码量,出现了JDOM;优点:20-80原则,极大减少了代码量。使用场合:要实现的功能简单,如解析、创建等,但在底层,JDOM还是使用SAX(最常用)、DOM、Xanan文档。 3.jdom,这个也是基于DOM实现的,但其API比DOM好用,更灵活,不是标准W3C 4
5.2.dom4j
百度为您找到相关结果约238,000个 DOM4J,原来是JDOM的分支,现独立开发,处于JDOM于SAX之间,即支持把XML放进内存,但可以读取时选择性删除DOM节点减少内存使用,所以也可以处理大数据XML文件,传说hibernate的配置文件也是基于dom4J(没看hibernate源码)
5.3.XStream百度为您找到相关结果约196,000个
6.bean对象object互相转换xmlXStreamse,dom4j,jdom好像都吗,,自能XStream privatestaticvoidobj2xml(TUserUsersu){
XStreamxstream=newXStream(); //xstream.alias("address",Address.class); //xstream.alias("addresses",Addresses.class); //xstream.alias("person",Person.class); //xstream.alias("persons",Persons.class); Stringxml=xstream.toXML(u); System.out.println(xml); } <com.focusx.entity.TUserUsers> <name>att</name> <address>add</address> <roleId>0</roleId> </com.focusx.entity.TUserUsers>
6.1.map转换xml<map> <entry> <string>total</string> <int>1</int> </entry> <entry> <string>rows</string> <list> <map> <entry> <string>file_path</string> <string>uploadf/01.mp4</string> </entry> <entry> <string>material_keyword</string> <null/> </entry>
</map> </list> </entry> </map> 7.json转换xmlnet.sf.json.JSONObjectJSONObjectjobj=JSONObject.fromObject(JsonX.toJsonStrO88(u)); Stringxml=newXMLSerializer().write(jobj); needxom.jar { "address":"add", "agentActivate":0, "byname":"", "computerName":"", "defaultGroup":0, "email":"", "extensionTel":"", "id":0, "ipaddress":"", "isSystem":0, "isValid":0, "mobileTel":"", "name":"att", "passWord":"", "roleId":0, "shortName":"", "tel":"", "workNo":"", "workno2":"" }
<?xmlversion="1.0"encoding="UTF-8"?> <o> <addresstype="string">add</address> <agentActivatetype="number">0</agentActivate> <bynametype="string"/> <computerNametype="string"/> <defaultGrouptype="number">0</defaultGroup> <emailtype="string"/> <extensionTeltype="string"/> <idtype="number">0</id> <ipaddresstype="string"/> <isSystemtype="number">0</isSystem> <isValidtype="number">0</isValid> <mobileTeltype="string"/> <nametype="string">att</name> <passWordtype="string"/> <roleIdtype="number">0</roleId> <shortNametype="string"/> <teltype="string"/> <workNotype="string"/> <workno2type="string"/> </o>
7.1.json2xml法2(马验证)..org.json包JSONObject(javabean转换xml形式和JSON形式) 在org.json包下面有很多实用的类比如JSONObject,它可以把javabean对象转换成JSON形式,也可以转换成xml形式.Useruser=newUser();user.setName("wujunjie");user.setPass("123345");JSONObjectjsonobject=newJSONObject(user);System.out.println(jsonobject.toString());//{"name":"wujunjie","pass":"123345"}Stringxml=XML.toString(jsonobject);System.out.println(xml);//<name>wujunjie</name><pass>123345</pass>
8.参考Java处理XML的三种主流技术及介绍(2)-51CTO.COM.htm Java的JSON、XML转换方法——目录索引-hoojo-博客园.htm 利用XStream在Java对象和XML之间相互转换-熔岩-51CTO技术博客.htm (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |