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互相转换xml  XStream 5

6.1. map转换xml 5

7. json转换xml   net.sf.json.JSONObject 6

7.1. json2xml 法2(马验证)..org.json包 7

8. 参考 7

1. XML类库可以分成2大类。标准的。这些类库通常接口和实现都是分开的

第一类是有标准的。这些类库通常接口和实现都是分开的, 接口通常由一些组织订立, 实现由另一些组织实现。 比如, SAX, 和 DOM。 SAX定义的是一个基于事件的XML流解析器, 没有定义模型。 而DOM定义的是一个文档对象的模型, 却没有定义从XML文件到DOM对象的过程。 这个过程的接口是由JAXP定义的。 
  SAX的接口包是org.xml.sax, DOM的是org.w3c, JAXP是javax.xml.parsers。
  
  第二类的是非标准的。 都是一些对标准不满的人另起炉灶的结果。 如,jdom, 和dom4j。非标准的不一定代表不流行。dom4j就是现在最流行的XML库了。

作者:: 老哇的爪子 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 默默无闻的 Digester

3.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. File input = new File("books.xml");

3. Digester digester = new Digester();

4.

5. // 如果碰到了 <books> 这个标签,应该初始化 test.myBean.Books 这个 JavaBean 并填装相关内容

6. digester.addObjectCreate("books", "test.myBean.Books");

7. digester.addSetProperties("books");

8. // 如果碰到了 <books/book> 这个标签,同上初始化 test.myBean.Book 这个 JavaBean

9. digester.addObjectCreate("books/book", "test.myBean.Book");

10. digester.addSetProperties("books/book");

11. // 通过调用上面已经初始化过的 JavaBean 的 addBook() 方法来把多个 <books/book> 加到一个集合中

12. digester.addSetNext("books/book", "addBook", "test.myBean.Book");

13.

14. // 定义好了上面的解析规则后,就可以开始进行解析工作了

15. Books books = (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互相转换xml  XStream

se,dom4j,jdom好像都吗,,自能 XStream

private static void obj2xml(TUserUsers u) {

XStream xstream = new XStream();

//        xstream.alias("address", Address.class);

//        xstream.alias("addresses", Addresses.class);

//        xstream.alias("person", Person.class);

//        xstream.alias("persons", Persons.class);

String xml = 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转换xml   net.sf.json.JSONObject

JSONObject jobj = JSONObject.fromObject(JsonX.toJsonStrO88(u));

String xml =  new XMLSerializer().write(jobj);

need  xom.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": ""

}

<?xml version="1.0" encoding="UTF-8"?>

<o>

<address type="string">add</address>

<agentActivate type="number">0</agentActivate>

<byname type="string" />

<computerName type="string" />

<defaultGroup type="number">0</defaultGroup>

<email type="string" />

<extensionTel type="string" />

<id type="number">0</id>

<ipaddress type="string" />

<isSystem type="number">0</isSystem>

<isValid type="number">0</isValid>

<mobileTel type="string" />

<name type="string">att</name>

<passWord type="string" />

<roleId type="number">0</roleId>

<shortName type="string" />

<tel type="string" />

<workNo type="string" />

<workno2 type="string" />

</o>

7.1. json2xml 法2(马验证)..org.json包

JSONObject(javabean转换xml形式和JSON形式)

在org.json包下面有很多实用的类比如JSONObject,它可以把javabean对象转换成JSON形式,也可以转换成xml形式.   User user = new User();user.setName("wujunjie");user.setPass("123345");JSONObject jsonobject = new JSONObject(user);System.out.println(jsonobject.toString());//{"name":"wujunjie","pass":"123345"}String xml = 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

atitit.XML类库选型及object 对象bean 跟json转换方案相关推荐

  1. java 序列化成xml文件_将Java对象序列化成JSON和XML格式

    1.先定义一个Java对象Person: public class Person { String name; int age; int number; public String getName() ...

  2. php将json转换成对象,php将json转换成对象或数组

    php将json转换成对象或数组 发布时间:2020-06-01 16:31:29 来源:亿速云 阅读:126 作者:鸽子 在PHP中可以使用json_decode()函数将JSON编码的字符串转换为 ...

  3. Atitit xml框架类库选型 attilax总结

    Atitit xml框架类库选型 attilax总结 1. 1. XML类库可以分成2大类.标准的.这些类库通常接口和实现都是分开的1 2. Jdom 和dom4j1 2.1. 5.1. jdom1 ...

  4. xml和对象之间的互相转换以及json和对象之间的互相转换

    首先先讲json和对象之间的互相转换,因为这个比较简单. 首先引入依赖 <dependency> <groupId>com.alibaba</groupId> &l ...

  5. spring MVC做form提交Neither BindingResult nor plain target object for bean name 'command' available...

    我的改正是在form表单上添加了个modelAttribute="employee"然后在 @RequestMapping(value="/emp",metho ...

  6. 基于Xml 的IOC 容器-载入<bean>元素

    Bean 配置信息中的<import>和<alias>元素解析在DefaultBeanDefinitionDocumentReader 中已经完成,对Bean 配置信息中使用最 ...

  7. php object 对象不存在。增加对象_PHP开发自己的框架,这些知识点不能错过

    一.PHP常用的四种数据结构 简介:spl是php的一个标准库. <?php//spl(php标准库)数据结构/*** 栈(先进后出)*/ $stack = new SplStack(); $s ...

  8. jdom 读取xml_JDOM分析器–将XML文件读取为Java对象

    jdom 读取xml JDOM parser provides us a great Java XML API to read, edit and write XML documents easily ...

  9. Vue处理后台返回List集合带有Object对象的数据

    Vue JSON数组.JSON对象.数组的区别,请参考博客:JSON数组,JSON对象,数组的区别 在Vue接收到后台的List集合数据中含有对象想转成数据对象的形式(Array)如图一:而不是Obj ...

  10. java对象上有横线_对象bean间属性值复制:无视大小写和下划线_和横杠-

    1.简要说明:在java代码开发过程中,总会遇到实体类bean直接的属性复制问题,将一个bean中的值复制到另一个bean中,这时如果属性名是形同的,(仅仅有大小写或带下划线_或带横杠-)的区别,那就 ...

最新文章

  1. ORACLE11g 没有控制文件如何通过rman备份恢复数据的详细实战过程
  2. c++和java哪个难_前端和Java开发哪个难?哪个学习容易一点?
  3. 利用任务调度特性检测Android模拟器
  4. 第三次学JAVA再学不好就吃翔(part13)--基础语法之while循环语句
  5. 华为鸿蒙战略大会,华为发布鸿蒙2.0手机版的三大战略意义,全场景万物互联只是其一...
  6. 开源项目面试重要吗_开源是最重要项目的骨干
  7. SCCM 2012 R2 从入门到精通 Part11 系统推送(2)
  8. [论文阅读] Unsupervised Domain Adaptive Salient Object Detection Through Uncertainty-Aware Pseudo-Label
  9. 【WEB服务器】与 【应用服务器】
  10. 微型计算机系统软件包括哪些,计算机的软件系统包括哪些内容
  11. npoi 删除多行 操作excel_NPOI操作EXCEL 【只争朝夕】
  12. 根号3表白html,根号三的那句情话
  13. Java使用JavaMail收发Email电子邮件
  14. 微信小程序的广告方式有哪些
  15. HTML 标签全写及描述
  16. TypeError: unsupported operand type(s) for //: ‘str‘ and ‘int‘
  17. JavaSE基础语法中的修饰符
  18. 马云雕像事件谁在背后操刀?
  19. 新技能,如何给GIF动图添加文字水印
  20. 高通功耗优化调试7之DoU (Days of Usage)功耗调试

热门文章

  1. Everything+ listary+TotalCommander+QTTabBar相互整合
  2. heapsort(Java)(最小堆)
  3. Linux学习笔记08—如何关闭防火墙
  4. Spring Security 11 种过滤器介绍
  5. JDBC更新10W级以上数据性能优化
  6. MongoDB学习笔记(查询)
  7. 《微软:DirectShow开发指南》第三章 Programming DirectShow Applications
  8. 打造个人专版为CMD加上一把锁
  9. Framework4.5,vs下系统自动生成的C++ win32应用程序的详细解释
  10. http客户端-性能比较系列-第二篇-多线程