`
luyuwww
  • 浏览: 96505 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

利用JAXB进行xml和javabean之间转换

 
阅读更多

     Xml和javabean之间的互相转换是开发中常常遇到的问题,今天小试了一下JAXB,感觉真是太方便了,这里特此记录(JDK6中加入了JAXB,不需要额外导出包) 

     利用JAXB实现XML与Javabean之间的相互转换的大致思想:利用XML的生成相应的XSD或者DTD,然后利用该XSD或DTD生成对应的javabeanClass和ObjectFactory, 网上找个一个来描述了这个步骤:



 一些名词:

JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。

DTD (Documnet Type Definition) 即文档类型定义,是一套关于标记符的语法规则。它是XML1.0版规格得一部分,是XML文件的验证机制,属于XML文件组成的一部分。

XSD(XML Schema Definition,XSD) XML Schema 定义, 是基于 XML 的 DTD 替代者

 

开始转换 

一.  利用XML生成相应XSD或者DTD

      1. 生成XSD可以通过一个online工具完成.

             网址: http://www.freeformatter.com/xsd-generator.html#ad-output

   

       2.  生成DTD,通过一个java小工具:http://sourceforge.net/projects/xml2dtd/


 

 

二.  利用生成的XSD或者DTD生成java类: 

     1. 命令行的方式(jdk6的支持)

            (a)  XSD生成java: cmd--> cd xsd所在文件夹--> xjc  –d  .  –p  包名  ./test.xsd

            (b)  DTD生成java: cmd --> cd DTD所在文件夹 --> xjc  -dtd  –d  .  –p  包名  ./test.dtd

      2. Eclipse下面生成java,此方法只针对xsd,选中你的xsd,右键:



           
然后选择包等操作,一步一步就可以生成了.

    注意:XML里面最好不要包含value等敏感关键字,如果包含.先用别的名词替换,当生成javabean后再修改javabean.

 

 

三. 利用生成javabean来进行xmljava之间的转换

 a> XML到javabean 

File file = new File("C:/ML_OA_DATA.xml");
String xmlStr = FileUtils.readFileToString(file , "UTF-8");
Reader reader = new StringReader(xmlStr);
 Unmarshaller unmarshaller =  JAXBContext.newInstance(Result.class).createUnmarshaller();     
Result result = (Result) unmarshaller.unmarshal(reader); 
List<Result.DocInfo.Field> list = result.getDocInfo().getField();
List<Attachment> eFileList = result.getAttachments().getAttachment();
for (Attachment efile : eFileList) {
     	System.out.println(efile.getFtpdir());
}
 核心的就是这2句,1 注册对象,2反序列化
Unmarshaller unmarshaller =  JAXBContext.newInstance(Result.class).createUnmarshaller();
Result result = (Result) unmarshaller.unmarshal(reader); 
unmarshal可以接收inputstream , read , file等.这里是通过string转换成reader 
b> javabean到XML 
Marshaller mashaller =  JAXBContext.newInstance(Result.class).createMarshaller();
ObjectFactory factory = new ObjectFactory();
Result toxmlResult = factory.createResult();
//可选 开始
Field theField = factory.createResultDocInfoField();
theField.setColName("ssss");
DocInfo dii = factory.createResultDocInfo();
dii.getField().add(theField);
toxmlResult.setDocInfo(dii);
//可选 结束
mashaller.marshal(toxmlResult, new File("c:/outPut.xml"));

核心: 注册对象 和序列化

Marshaller mashaller =  JAXBContext.newInstance(Result.class).createMarshaller();

mashaller.marshal(toxmlResult, new File("c:/outPut.xml"));

 

 

附源码

  • 大小: 14.4 KB
  • 大小: 11.5 KB
  • 大小: 5.5 KB
  • 大小: 14.7 KB
分享到:
评论

相关推荐

    xml转javaBean,javaBean转xml,xml标签大小写问题,以及对xml特殊符号的处理

    总结,XML与JavaBean之间的转换是Java开发中的常见操作,理解XML的大小写规则、特殊符号处理和CDATA的使用对于编写健壮的XML处理代码至关重要。掌握这些知识可以帮助开发者更有效地在XML和Java对象之间进行数据交换...

    javabean和xml互相转换工具类以及jar包

    这个类可能包含静态方法,如`beanToXml(JavaBean bean)`用于将JavaBean转换为XML字符串,以及`xmlToBean(String xml)`用于将XML字符串反向转换回JavaBean。使用这样的工具类可以使代码更加简洁,提高代码复用性。 ...

    xml与javabean的相互转换

    总结起来,XML与JavaBean之间的转换涉及多种技术和库,如JAXB、DOM、SAX以及XMLBeans等。理解这些工具的使用和优缺点,能帮助开发者根据具体需求选择合适的方法进行数据交换。在实际开发中,合理利用这些技术可以...

    使用JAXB完成JAVAbean与xml互转

    Java Architecture for XML Binding (JAXB) 是Java平台上的一个标准技术,它允许在Java对象(如JavaBeans)和XML文档之间进行互相转换。这个过程被称为对象绑定,它简化了XML数据的处理,使得开发人员无需手动编写...

    xml和bean之间的相互转换源码

    以上就是关于XML和JavaBean之间转换的基本概念、技术和实现步骤。理解这些知识对于处理Java中的数据序列化和反序列化至关重要。在实际项目中,我们可能需要处理更复杂的XML结构和嵌套的Bean,但核心思想是相同的。

    JAXB xml与对象转换

    它允许开发者将XML Schema定义的数据结构直接映射到Java类,从而方便地在XML和Java对象之间进行转换。JAXB简化了XML数据的处理,使得XML的读写操作变得更加直观和高效。 ### JAXB工作原理 JAXB的核心概念是两个主要...

    Jaxb2 实现JavaBean与xml互转

    本篇将深入探讨JAXB2在实现JavaBean到XML以及XML到JavaBean转换中的原理和步骤。 首先,我们需要了解JAXB的基本概念。JAXB是Java平台的标准之一,它定义了如何将Java类和XML Schema进行绑定,从而实现对象和XML之间...

    JavaBean和xml转换

    Java内置的JAXB(Java Architecture for XML Binding)框架提供了JavaBean和XML之间的转换功能。JAXB允许开发者通过简单的注解将Java类映射到XML schema,然后自动完成序列化和反序列化过程。 **JAXB的基本概念:**...

    javabean 与 xml文件转换

    JavaBean和XML之间的转换是Java开发中常见的数据交换方式,特别是在处理配置文件或者进行数据持久化时。这两种格式都有其独特的优势:JavaBean是面向对象的,方便编程,而XML则是一种通用的数据交换格式,易于人阅读...

    xml和bean 互相转换

    在Java开发中,XML(可扩展标记语言)和Bean之间的互相转换是一项常见的任务,尤其是在处理配置文件、数据交换或者序列化场景中。本篇将详细阐述XML与Bean之间的转换过程,以及相关的Java技术。 首先,XML是一种...

    javabean到XML的转换

    将JavaBean转换为XML是常见的数据序列化方式,有助于在不同系统间共享和存储对象状态。 在Java中,有多种方法可以实现JavaBean到XML的转换,包括使用API如JAXB(Java Architecture for XML Binding)、DOM...

    xml 与JAVAbean转换

    **工具** 如Apache Commons BeanUtils库也可以用来在JavaBean和Map对象之间进行转换,虽然它不直接处理XML,但可以作为进一步转换的基础。此外,一些IDE如Eclipse和IntelliJ IDEA提供了内置的功能来自动生成JavaBean...

    Xml与javaBean互转.zip

    StAX的`XMLStreamReader`和`XMLStreamWriter`接口可以用于将JavaBean转换为XML和反之。 5. **XStream库**:XStream是一个轻量级的Java库,它可以将任何Java对象序列化为XML,反之亦然。XStream使用简单的注解,使得...

    Jaxb2实现JavaBean与xml互转的方法详解

    JAXB (Java Architecture for XML Binding) 是Java平台上的一个标准,它允许开发人员将XML文档与Java对象之间进行绑定,从而实现XML数据的序列化和反序列化。Jaxb2是JAXB的一个版本,从JDK 1.6开始成为其内置组件,...

    javaBean 与 xml 互转

    通过定义符合JavaBean规范的类,并利用JAXB的序列化和反序列化功能,我们可以方便地在Java对象和XML文档之间进行数据转换。这在处理Web服务、配置文件或跨平台数据交换时非常有用。在实际开发中,确保对这些基本概念...

    xml与json、javabean的互相转换

    在Java开发中,有时我们需要将XML转换为JSON,反之亦然,或者将这些格式与JavaBean对象进行互换,以便于数据处理和传输。本篇文章将深入探讨XML、JSON与JavaBean之间的转换方法。 首先,我们来看XML和JSON的特性。...

    json、javaBean、xml互转的几种工具介绍

    在IT行业中,数据交换和序列化是至关重要的环节,json、JavaBean和XML作为常见的数据表示格式,它们之间的转换需求频繁出现。这篇博客主要探讨了几种用于这些格式互转的工具,下面将详细介绍这些工具及其使用方法。 ...

Global site tag (gtag.js) - Google Analytics