【发布时间】:2017-08-16 07:39:49
【问题描述】:
我正在尝试将以下嵌套结构映射到列表。问题是<list> 可以嵌套。因此,例如,顶级列表可以包含一个或多个其他列表,这些列表又包含一些元素,例如我的示例中的 <property>:
<operator name="A2">
<list name="table">
<list>
<property name="A1" value="1" dataType="boolean"/>
<property name="b" value="1" dataType="boolean"/>
</list>
</list>
</operator>
<list> 也可以直接包含<property> 元素而无需进一步嵌套:
<operator name="A3">
<list name="xyz">
<property name="x" value="1.9" dataType="double"/>
<property name="y" value="0.2" dataType="double"/>
</list>
</operator>
我试着像这样映射它:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "list")
public class List<T> {
@XmlAttribute(name="name")
public String name;
@XmlAnyElement
public T topLevelList;
public List() {}
}
但是,只有外部列表被映射。这是第一个 XML 块的打印 toString 调用中的相关部分:
Operator{list=List{name='table', topLevelList=[list: null]}}
如何使用 JAXB 映射这样的结构?
【问题讨论】: