在他的回应中,mavrav似乎告诉我们使用DTD是不可能的。我不太了解如何使用DTD。但是,如果可以,请以XML模式转换DTD。
我尝试过这个shema:
<?xml version="1.0"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:hr="http://mycompany.com/schema" elementFormDefault="qualified" targetNamespace="http://mycompany.com/schema"> <!-- Contents --> <xs:element name="persons"> <xs:complexType> <xs:sequence> <xs:element name="header" /> <xs:element name="content" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="groups"> <xs:complexType> <xs:sequence> <xs:element name="header" /> <xs:element name="content" /> </xs:sequence> </xs:complexType> </xs:element> <!-- Header --> <xs:element name="header"> <xs:complexType> <xs:sequence> <xs:element name="version" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> <!-- Content --> <xs:element name="content"> <xs:complexType> <xs:sequence> <xs:element name="person" maxOccurs="unbounded" /> <xs:element name="group" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> </xs:element> <!-- Person --> <xs:element name="person"> <xs:complexType> <xs:sequence> <xs:element name="p_id" type="xs:integer" /> <xs:element name="p_name" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> <!-- Group --> <xs:element name="group"> <xs:complexType> <xs:sequence> <xs:element name="g_id" type="xs:integer" /> </xs:sequence> </xs:complexType> </xs:element></xs:schema>
用以下cmd生成Java类后:
xjc -p com.mypackage schema.xsd
它为Content类提供了以下代码:
@XmlRootElement(name = "content")public class Content { @XmlElement(required = true) protected List<Object> person; @XmlElement(required = true) protected List<Object> group; public List<Object> getPerson() { if (person == null) { person = new ArrayList<Object>(); } return this.person; } public List<Object> getGroup() { if (group == null) { group = new ArrayList<Object>(); } return this.group; }}


