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/