标准化的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 Bean 与 XML 映射关系。如何只要关注业务实体,却不必关心XML的数据结构。相关的技术为J2EE JAXB。
2.1、JavaServer页面标准标签库(JSTL)及带附件API的Java SOAP(SAAJ)等技术与服务。 本书的读者对象是那些对在Sun Java系统应用服务器平台第9版上开发和部署Java EE 5 应用感兴趣的程序员。它可以使读者对整个...
javax.xml.bind.annotation.adapters XmlAdapter 及其规范定义的子类允许任意 Java 类与 JAXB 一起使用。 javax.xml.bind.attachment 此包由基于 MIME 的包处理器实现,该处理器能够解释并创建基于 MIME 的包格式的...
l JaxMe是JAXB(Java/XML绑定规范)的开源实现 l Java/XML绑定编译器的输入是模式描述:大多数是XML模式,也可以是DTD、RelaxNG模式、通过反射的JavaBean或数据库模式 l 输出是一系列Java类: Ø 兼容模式描述的...
javax.xml.bind.annotation.adapters XmlAdapter 及其规范定义的子类允许任意 Java 类与 JAXB 一起使用。 javax.xml.bind.attachment 此包由基于 MIME 的包处理器实现,该处理器能够解释并创建基于 MIME 的包格式的...
javax.xml.bind.annotation.adapters XmlAdapter 及其规范定义的子类允许任意 Java 类与 JAXB 一起使用。 javax.xml.bind.attachment 此包由基于 MIME 的包处理器实现,该处理器能够解释并创建基于 MIME 的包格式的...
javax.xml.bind.annotation.adapters XmlAdapter 及其规范定义的子类允许任意 Java 类与 JAXB 一起使用。 javax.xml.bind.attachment 此包由基于 MIME 的包处理器实现,该处理器能够解释并创建基于 MIME 的包格式的...
javax.xml.bind.annotation.adapters XmlAdapter 及其规范定义的子类允许任意 Java 类与 JAXB 一起使用。 javax.xml.bind.attachment 此包由基于 MIME 的包处理器实现,该处理器能够解释并创建基于 MIME 的包格式的...
javax.xml.bind.annotation.adapters XmlAdapter 及其规范定义的子类允许任意 Java 类与 JAXB 一起使用。 javax.xml.bind.attachment 此包由基于 MIME 的包处理器实现,该处理器能够解释并创建基于 MIME 的包格式的...
javax.xml.bind.annotation.adapters XmlAdapter 及其规范定义的子类允许任意 Java 类与 JAXB 一起使用。 javax.xml.bind.attachment 此包由基于 MIME 的包处理器实现,该处理器能够解释并创建基于 MIME 的包格式的...
真正简单的Java XML绑定(RE-JAXB)是一种将XML映射到普通的旧Java对象再映射回XML的方法,而无需使用Bean,无需外部绑定定义,无需手动映射值以及无需使用XSD文件。
javax.xml.bind.annotation.adapters XmlAdapter 及其规范定义的子类允许任意 Java 类与 JAXB 一起使用。 javax.xml.bind.attachment 此包由基于 MIME 的包处理器实现,该处理器能够解释并创建基于 MIME 的包格式的...
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 ...
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 ...