`
zzc1684
  • 浏览: 1222802 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

JAXB学习一 (入门)

    博客分类:
  • JAXB
阅读更多

JAXB全称Java Architecture for XML Binding,是一个用于在XML和Java对象之间进行映射的规范。使用JAXB,可以自动的将一个XML文档映射成对应的Java对象,也可以将对象保存成XML格式。有很多其他的处理XML结构和对象之间映射的技术,这里只讨论JAXB。

 

一、安装

 

首先我们需要去下一份JAXB的实现,可以去SUN(现在的oracle)网站上去下载:http://jaxb.java.net/

下载的是一个份jar文件,可以使用命令"java -jar jaxb**.jar"运行该jar文件,或者在windows(如果是的话)选择做为java应用运行即可。

 

接受许可之后,在运行的当前目录下就会生成一个文件夹,结构大致为:

jaxb

这样就算安装成功了。

 

二、生成模型

 

安装完以后,就可以开始使用了,首先我们需要有一份schema文件,例如:

Xml代码 复制代码 收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.liulutu.com/students/"  
  3.     targetNamespace="http://www.liulutu.com/students/">  
  4.     <element name="students">  
  5.         <complexType>  
  6.             <sequence>  
  7.                 <element name="student" type="tns:StudentType" maxOccurs="unbounded" />  
  8.             </sequence>  
  9.         </complexType>  
  10.     </element>  
  11.     <simpleType name="SexType">  
  12.         <restriction base="string">  
  13.             <enumeration value="Male"></enumeration>  
  14.             <enumeration value="Female"></enumeration>  
  15.         </restriction>  
  16.     </simpleType>  
  17.   
  18.     <complexType name="StudentType">  
  19.         <attribute name="sex" type="tns:SexType"></attribute>  
  20.         <attribute name="name" type="string"></attribute>  
  21.     </complexType>  
  22. </schema>   

然后就可以根据这个schema文件生成对应的java模型类文件,可以到jaxb的bin目录下去,使用以下命令生成模型文件:

Java代码 复制代码 收藏代码
  1. xjc.bat students.xsd -d src -p com.liulutu.student.model  
xjc.bat students.xsd -d src -p com.liulutu.student.model

 

其中students.xsd指定要读入的schema文件;-d指定源代码存放目录;-p指定模型对象所在的包。

如果不出意外,上面的schema会对应生成以下模型文件:

models

 

三、使用

 

有了以上模型文件后,就可以开始使用,例如

  • 模型到XML
Java代码 复制代码 收藏代码
  1. public class TestMarshaller {   
  2.   
  3.     public static void main(String[] args) throws JAXBException {   
  4.         JAXBContext con = JAXBContext.newInstance("com.liulutu.student.model");   
  5.   
  6.         ObjectFactory factory = new ObjectFactory();   
  7.         Students students = factory.createStudents();   
  8.         addNewStudentTo(factory, students, "aaa", SexType.MALE);   
  9.         addNewStudentTo(factory, students, "bbb", SexType.FEMALE);   
  10.   
  11.         Marshaller marshaller = con.createMarshaller();   
  12.         marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);   
  13.         marshaller.marshal(students, new File("a.xml"));   
  14.     }   
  15.   
  16.     private static void addNewStudentTo(ObjectFactory factory,   
  17.             Students students, String name, SexType type) {   
  18.         StudentType studentType = factory.createStudentType();   
  19.         studentType.setName(name);   
  20.         studentType.setSex(type);   
  21.         students.getStudent().add(studentType);   
  22.     }   
  23.   
  24. }  

 保存后的xml文件内容如下:

Xml代码 复制代码 收藏代码
  1. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>  
  2. <ns2:students xmlns:ns2="http://www.liulutu.com/students/">  
  3.     <student name="aaa" sex="Male"/>  
  4.     <student name="bbb" sex="Female"/>  
  5. </ns2:students>  
  •  XML到模型

以下代码用来还原以上保存的XML文件对应的模型(假如保存的文件名为a.xml):

Java代码 复制代码 收藏代码
  1. public class TestUnmarshaller {   
  2.   
  3.     public static void main(String[] args) throws JAXBException {   
  4.         JAXBContext con = JAXBContext.newInstance("com.liulutu.student.model");   
  5.         Unmarshaller unmarshaller = con.createUnmarshaller();   
  6.         Students students = (Students) unmarshaller.unmarshal(new File("a.xml"));   
  7.         List<StudentType> student = students.getStudent();   
  8.         Iterator<StudentType> iterator = student.iterator();   
  9.         while(iterator.hasNext()){   
  10.             StudentType next = iterator.next();   
  11.             System.out.println(next.getName()+"  "+next.getSex());   
  12.         }   
  13.     }   
  14.   
  15. }  
分享到:
评论

相关推荐

    jaxb入门学习

    ### Jaxb入门学习知识点详解 #### 一、JAXB概念与作用 JAXB (Java Architecture for XML Binding) 是一种将XML数据与Java对象互相转换的技术。它通过编组(marshalling)和解组(unmarshalling)的过程,使得开发者...

    JAXB入门学习(五)

    NULL 博文链接:https://popomonkey.iteye.com/blog/688580

    JAXB资料集.rar

    总的来说,这份"JAXB资料集.rar"是一份全面学习JAXB的资源,包含了理论指导、实践示例和问题解决,适合对JAXB感兴趣的开发者进行深入学习。通过阅读和实践其中的内容,可以有效提升对XML数据处理的能力,并在实际...

    JAXB简易教程

    此教程旨在为开发人员和系统维护人员提供一个快速入门的指南,帮助他们理解和使用JAXB的基本功能。 **2. 开发指南** **2.1 导入JAXB** 在Java项目中使用JAXB,首先需要添加对应的依赖。如果你使用的是Maven,可以...

    WebService CXF学习-入门篇.pdf

    **WebService CXF 学习——入门篇** **一、WebService CXF 由来与目标** Apache CXF 是一个流行的开源框架,它源自 ObjectWeb Celtix 和 CodeHaus XFire 的合并,这两个项目分别由 IONA 公司和业界知名SOAP堆栈...

    Docx4J入门指南(英文)

    Docx4J可视为JAXB的一个实现,其中还包括Open Packaging Conventions和WordProcessingML等。 Docx4J提供了一套丰富的API来处理和创建文档,包括但不限于文本插入、格式化、图像处理、页眉和页脚处理等。同时,Docx4...

    XML学习进阶 XML学习入门资料

    1. Java:DOM、SAX、JAXB(Java Architecture for XML Binding)等库处理XML。 2. Python:`xml.etree.ElementTree`模块提供DOM-like接口,还有`lxml`库支持XPath和XSLT。 3. .NET:`System.Xml`命名空间提供了多种...

    web service入门学习笔记

    Web Service入门学习笔记 Web Service是一种基于互联网的、平台无关的通信协议,它允许不同系统间的应用程序通过网络互相调用,实现数据交换和服务共享。在本文中,我们将深入探讨Web Service的基本概念,以及如何...

    cxf入门文档

    cxf从入门到精通”这句话表明,这份文档不仅适合刚刚接触CXF的开发者,还提供了一个全面的学习路径,从基础到进阶,涵盖了CXF的所有关键知识点。通过阅读这份文档,你可以逐步掌握如何使用CXF来创建、测试和部署Web...

    WebService入门教程_Schema学习示例代码

    【WebService入门教程_Schema学习示例代码】 在IT行业中,WebService是一种基于标准的、平台无关的、可互操作的Web应用程序接口(API)设计方法。它允许不同系统间的应用程序通过互联网进行通信,实现数据交换和...

    Web Service修炼之一XFire入门3

    Web服务是互联网上不同系统间通信的一种标准协议,它允许...通过学习XFire,开发者可以理解Web服务的核心概念,如SOAP消息交换、JAXB对象绑定以及服务的发布和消费,这将有助于进一步掌握其他高级Web服务框架的使用。

    webservice入门学习代码笔记

    6. **工具与框架**:在学习过程中,可能会用到各种工具和框架,例如Apache Axis、CXF、Gson、JAXB等,它们可以帮助简化Web服务的开发和测试。 7. **安全性**:Web服务的安全性非常重要,包括身份验证、授权、数据...

    RESTEasy入门经典.docx

    RESTEasy是一个由JBoss开发的开源项目,专门用于构建RESTful Web Services。REST(Representational State Transfer)是一...而JAXB作为XML绑定的标准,是理解RESTEasy工作原理和实现的关键部分,值得深入学习和掌握。

    Java网络编程从入门到精通

    本教程"Java网络编程从入门到精通"旨在帮助初学者和有经验的开发者深入理解这一领域,从基础知识到高级主题,提供了一套全面的学习资源。 在Java中,网络编程主要涉及以下核心知识点: 1. **Socket编程**:Java的...

    xml入门课件(一)

    本篇“XML入门课件(一)”提供了深入浅出的教程,适合初学者了解和掌握XML的基本概念和用法。 1. **XML的基本原理**: - XML是一种自描述性语言,其目的是通过提供一套规则来创建具有明确结构的数据。 - XML文档...

    WebService CXF学习文档

    WebService CXF学习——入门篇 1.CXF由来 2.HelloWorld 3.WSDL描述 WebService CXF学习——进阶篇 1.SOAP讲解 2.JAX-WS讲解 3.对象传递 WebService CXF学习——高级篇(一)(二) 1.整合Spring框架 2.CXF...

    CXF入门教程及源码

    CXF(CXF: Composite eXtensible Framework)是一个开源的Java服务框架,它主要用于构建和开发服务提供者和服务消费者。CXF允许开发者使用多种标准和非标准的协议来发布、发现和调用Web服务。在这个“CXF入门教程及...

    Web Service 之 XFire入门

    在“Web Service 之 XFire入门”这篇文章中,博主可能还会分享如何通过实例代码来演示这些步骤,例如创建一个名为“helloworld”的简单服务,这个服务可能只有一个返回“Hello, World!”的函数。这样的例子有助于...

    Webservice入门到精通

    此外,Axis2还支持可插拔的数据绑定机制,如JAXB和StAX。 #### 实验室操作 实验部分将指导读者如何部署Web服务和客户端,具体步骤包括: 1. **部署服务**:设置Axis2环境并部署Web服务。 2. **运行客户端**:编写...

Global site tag (gtag.js) - Google Analytics