3

我是第一次使用 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>

所以我想好吧,也许我可以将联系人元素称为一组组。相关部分:

<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 声明为复杂类型,因为它不包含在元素中。

谢谢

4

1 回答 1

1

我认为最好的办法是首先使用 XSLT 将坏的 XML 转换为好的 XML。然后用 Java 处理数据会容易得多。(谁知道呢,也许您可​​以完全在 XSLT 中处理数据并避免完全将其转换为 Java 格式。)如果没有合适的结构可以使用,Java 映射可能会非常糟糕。

于 2013-01-21T00:23:48.020 回答