我第一次使用JAXB并且有一些非常糟糕的XML我无法更改,我想为其生成类。
XML看起来像这样:
<root>
<contacts>
<name>...</name>
<phone>...</phone>
<address>..</address>
<name>...</name>
<phone>...</phone>
<address>..</address>
<name>...</name>
<phone>...</phone>
<address>..</address>
</contacts>
</root>
所以我认为好吧,也许我可以将contacts元素称为一系列组。相关部分:
<xs:group name="Contact">
<xs:sequence>
<xs:element name="name" type="xsd:string"/>
<xs:element name="phone" type="xsd:string"/>
<xs:element name="address" type="xsd:string"/>
</xs:sequence>
</xs:group>
<xs:complexType name="ContactList">
<xs:sequence><xs:group maxOccurs="unbounded" ref="Contact"/></xs:sequence>
</xs:complexType>
但是,我的ContactList对象只有一个看起来像这样的getter:
public List<JAXBElement<?>> getContact()
为什么没有声明Contact对象,我该如何解决这个问题?我不认为我可以将Contact声明为复杂类型,因为它不包含在元素中。
由于
答案 0 :(得分:1)
我认为最好的办法是首先使用XSLT将错误的XML转换为优秀的XML。然后,用Java处理数据会容易得多。 (谁知道,也许您可以完全在XSLT中处理数据并避免完全将其转换为Java格式。)如果没有合适的结构,Java映射可能非常糟糕。