读书人

JAVAEE之JAXB(2)

发布时间: 2012-10-29 10:03:53 作者: rapoo

JAVAEE之JAXB(二)

我们解析xml多数的时候都是读取操作,JAXB能写xml,自然也就能读取了。下面的例子是jaxb读取xml文件的例子。

这次的例子比上次多了一个嵌套子类也就是在person对像中除了基本类型外还包括Rank对象

xsd代码

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:import namespace="http://www.w3.org/XML/1998/namespace"schemaLocation="http://www.w3.org/2001/xml.xsd" /><xs:complexType name="person"><xs:sequence><xs:element name="age" type="xs:int" /><xs:element name="name" type="xs:string" /><xs:element name="isSingle" type="xs:boolean" /><xs:element name="rank" type="Rank" /></xs:sequence></xs:complexType>    <xs:complexType name="Rank">      <xs:sequence>         <xs:element name="money" type="xs:double"/>         <xs:element name="accountId" type="xs:string"/>      </xs:sequence>    </xs:complexType>   <xs:element name="persons" type="person" /></xs:schema> 
?

?生成的xml文件如下

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><persons>    <age>25</age>    <name>jerry</name>    <isSingle>true</isSingle>    <rank>        <money>888.888</money>        <accountId>10001</accountId>    </rank></persons>
?

读取xml文件的java代码

import java.io.FileInputStream;import javax.xml.bind.JAXBContext;import javax.xml.bind.JAXBElement;import javax.xml.bind.Unmarshaller;public class ReadXmlWithJaxb {@SuppressWarnings("unchecked")public static void main(String[] args) {try {JAXBContext context;context = JAXBContext.newInstance(ObjectFactory.class);Unmarshaller marshaller = context.createUnmarshaller();JAXBElement element = (JAXBElement) marshaller.unmarshal(new FileInputStream("D:/project/workspace/test/src/com/jcs/test/jaxb/generated/person.xml"));// 读取出根结点Person person = (Person) element.getValue();// 获取name值String name = person.getName();System.out.println(name);// 获取另一子结点Rank rank = person.getRank();String accountId = rank.getAccountId();double money = rank.getMoney();System.out.println(accountId);System.out.println(money);} catch (Exception e) {e.printStackTrace();}}}

?

其他代码见http://jerryjiang.iteye.com/blog/422853

?

这只是简单的jaxb应用,皮毛的很,还有许多其他功能详细请见http://java.sun.com/developer/technicalArticles/WebServices/jaxb/

读书人网 >软件架构设计

热点推荐