我正在尝试使用JAXB解析包含项目列表的XML文件。项目类取决于XML中元素的值。
这是一个遗留系统,我无法轻松更改输入格式。
例如,给定以下XML和类定义:
这是一个遗留系统,我无法轻松更改输入格式。
例如,给定以下XML和类定义:
<root>
<type>a</type>
<item>
<a>a1</a>
</item>
<item>
<a>a2</a>
</item>
</root>
@XmlRootElement(name = "root")
public class Root {
@XmlElement
String type;
@XmlElement(name="item")
List<Item> items;
}
public class Item {}
public class ItemA extends Item {
@XmlElement
String a;
}
public class ItemB extends Item {
@XmlElement
String b;
}
目前,项目列表中包含两个Item对象。
我需要在生成的Root对象中,项目列表包含两个ItemA对象,一个带有a="a1",另一个带有a="a2"。
如果类型元素为“b”,我需要项目列表包含ItemB对象。
单个XML文件中只会指定一个类型元素。
我已经看到过几种使用属性值的解决方案,但没有使用元素值的。