`
zchiml
  • 浏览: 43878 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JAXB标准方法绑定XML与Java Bean

 
阅读更多

标准化的JAXB实现Java Bean与 XML的绑定

 

XML example:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<wwprttxn xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
<price xsi:type="referencePriceElementType" type="I">
<offering>6948</offering>
<startdate>2011-04-21</startdate>
<currency>EUR</currency>
<cabletype>ANN</cabletype>
<cableid>N2Z11M026589</cableid>
<releasets>2011-04-21T19:51:17.649</releasets>
<pricevalue>0.000000</pricevalue>
<pricepointtype>FEA</pricepointtype>
<pricepointvalue>5076</pricepointvalue>
<country>AT</country>
<pricetype>XAC</pricetype>
<onshore>true</onshore>
<enddate>9999-12-31</enddate>
<pricevalueusd>0.000000</pricevalueusd>
<factor>1.000000</factor>
</price>
</wwprttxn>

P.S.

1. xs:dateTime

xs:dateTime是schema定义的日期时间型,当使用xs:dateTime()来强制转换某个字符串为日期时间型时,字符串的格式应该是:yyyy-mm-ddTHH:MM:SS
例如:2007-03-11T11:09:05,其中的"T"为日期和时间的分割符,是必须的.

 

 

关键的步骤是定义一个合法的XML Schema:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
	xmlns:this="http:///TestXML/Jaxb_test_1.xsd" 
	xmlns:xs="http://www.w3.org/2001/XMLSchema">
    
	<xs:element name="wwprttxn">
		<xs:complexType>
		<xs:sequence>  
			<xs:element name="price" maxOccurs="unbounded" type="PriceType">
			</xs:element>
		</xs:sequence>  
	    </xs:complexType>
	 </xs:element>
	  
	<xs:complexType name="PriceType">
	<xs:sequence>	
	        <xs:element name="offering" type="xs:string"/>
	        <xs:element name="startdate" type="xs:date"/>
	        <xs:element name="currency" type="xs:string"/>
	        <xs:element name="cabletype" type="xs:string"/>
	        <xs:element name="cableid" type="xs:string"/>
	        <xs:element name="releasets" type="xs:dateTime"/>
	        <xs:element name="pricevalue" type="xs:string"/>
	        <xs:element name="pricepointtype" type="xs:string"/>
	        <xs:element name="pricepointvalue" type="xs:string"/>
	        <xs:element name="country" type="xs:string"/>
	        <xs:element name="pricetype" type="xs:string"/>
	        <xs:element name="onshore" type="xs:string"/>
	        <xs:element name="enddate" type="xs:string"/>
	        <xs:element name="pricevalueusd" type="xs:string"/>
	        <xs:element name="factor" type="xs:string"/> 
	       </xs:sequence>   
	  </xs:complexType>	  
     
 </xs:schema>

 

由这个XSD文件生成需要的JAVA Bean Skeleton:

 

最后就可以使用JAXB的标准方法将XML解析成Java Bean:

/*
 * The String Parameter is the package name which contains the ObjectFactory
*/
JAXBContext jc = JAXBContext.newInstance("test.xml");			
Unmarshaller u = jc.createUnmarshaller();			
Wwprttxn w = (Wwprttxn)u.unmarshal(new File("D:/test/53.msg"));			
List<PriceType> priceList= w.getPrice();
 

P.S.

1. JAXB2.0 里Validator类已经Deprecated.

2. JAXBContext.newInstance(String packageName), PackageName里需要包含上图中的ObjectFactory.

分享到:
评论

相关推荐

    Java与XML数据绑定

    Java Bean 与 XML 映射关系。如何只要关注业务实体,却不必关心XML的数据结构。相关的技术为J2EE JAXB。

    Java EE 5权威指南(原书第3版)

    2.1、JavaServer页面标准标签库(JSTL)及带附件API的Java SOAP(SAAJ)等技术与服务。 本书的读者对象是那些对在Sun Java系统应用服务器平台第9版上开发和部署Java EE 5 应用感兴趣的程序员。它可以使读者对整个...

    JAVA_API1.6文档(中文)

    javax.xml.bind.annotation.adapters XmlAdapter 及其规范定义的子类允许任意 Java 类与 JAXB 一起使用。 javax.xml.bind.attachment 此包由基于 MIME 的包处理器实现,该处理器能够解释并创建基于 MIME 的包格式的...

    jaxme-0.3.jar.zip

    l JaxMe是JAXB(Java/XML绑定规范)的开源实现 l Java/XML绑定编译器的输入是模式描述:大多数是XML模式,也可以是DTD、RelaxNG模式、通过反射的JavaBean或数据库模式 l 输出是一系列Java类: Ø 兼容模式描述的...

    java api最新7.0

    javax.xml.bind.annotation.adapters XmlAdapter 及其规范定义的子类允许任意 Java 类与 JAXB 一起使用。 javax.xml.bind.attachment 此包由基于 MIME 的包处理器实现,该处理器能够解释并创建基于 MIME 的包格式的...

    Java 1.6 API 中文 New

    javax.xml.bind.annotation.adapters XmlAdapter 及其规范定义的子类允许任意 Java 类与 JAXB 一起使用。 javax.xml.bind.attachment 此包由基于 MIME 的包处理器实现,该处理器能够解释并创建基于 MIME 的包格式的...

    JavaAPI1.6中文chm文档 part1

    javax.xml.bind.annotation.adapters XmlAdapter 及其规范定义的子类允许任意 Java 类与 JAXB 一起使用。 javax.xml.bind.attachment 此包由基于 MIME 的包处理器实现,该处理器能够解释并创建基于 MIME 的包格式的...

    JavaAPI中文chm文档 part2

    javax.xml.bind.annotation.adapters XmlAdapter 及其规范定义的子类允许任意 Java 类与 JAXB 一起使用。 javax.xml.bind.attachment 此包由基于 MIME 的包处理器实现,该处理器能够解释并创建基于 MIME 的包格式的...

    [Java参考文档]

    javax.xml.bind.annotation.adapters XmlAdapter 及其规范定义的子类允许任意 Java 类与 JAXB 一起使用。 javax.xml.bind.attachment 此包由基于 MIME 的包处理器实现,该处理器能够解释并创建基于 MIME 的包格式的...

    [Java参考文档].JDK_API 1.6

    javax.xml.bind.annotation.adapters XmlAdapter 及其规范定义的子类允许任意 Java 类与 JAXB 一起使用。 javax.xml.bind.attachment 此包由基于 MIME 的包处理器实现,该处理器能够解释并创建基于 MIME 的包格式的...

    Really Easy Java XML Binding-开源

    真正简单的Java XML绑定(RE-JAXB)是一种将XML映射到普通的旧Java对象再映射回XML的方法,而无需使用Bean,无需外部绑定定义,无需手动映射值以及无需使用XSD文件。

    JDK_1_6 API

    javax.xml.bind.annotation.adapters XmlAdapter 及其规范定义的子类允许任意 Java 类与 JAXB 一起使用。 javax.xml.bind.attachment 此包由基于 MIME 的包处理器实现,该处理器能够解释并创建基于 MIME 的包格式的...

    Spring.3.x企业应用开发实战(完整版).part2

    4.10.4 Bean作用范围及生命过程方法 4.11 基于Java类的配置 4.11.1 使用Java类提供Bean定义信息 4.11.2 使用基于Java类的配置信息启动Spring容器 4.12 不同配置方式比较 4.13 小结 第5章 Spring容器高级主题 5.1 ...

    Spring3.x企业应用开发实战(完整版) part1

    4.10.4 Bean作用范围及生命过程方法 4.11 基于Java类的配置 4.11.1 使用Java类提供Bean定义信息 4.11.2 使用基于Java类的配置信息启动Spring容器 4.12 不同配置方式比较 4.13 小结 第5章 Spring容器高级主题 5.1 ...

Global site tag (gtag.js) - Google Analytics