先看 xml schema 限制
post.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="post" type="postType" />
<xs:complexType name="postType">
<xs:sequence maxOccurs="unbounded">
<xs:element name="id" type="xs:long" minOccurs="0"></xs:element>
<xs:element name="tiebaName" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="url" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="title" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="author" type="xs:string" minOccurs="0"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>
然後
static String path = PostMarshall.class.getClassLoader().getResource("com/jaxb/tieba/").getPath();
path = URLDecoder.decode(path, "utf-8");
JAXBContext factory = JAXBContext.newInstance(Post.class);
Schema schema = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI).newSchema(new File(path,"post.xsd"));
Marshaller ms = factory.createMarshaller();
Post post = new Post();
post.setAuthor("taoge");
//設定schema,驗證合法性
ms.setSchema(schema);
ms.marshal(post, new File(path + "post.xml"));
System.out.println(post.getAuthor());
運作java程式
生成的xml如下
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><post><author>taoge</author><id>0</id></post>
建立的 post 對象其 id == 0
是以會出現上述結果