我必须在Java对象中解析XML,而XML包含一个展开的对象的展开列表:
<main>
<mainPropA>Main Property A</mainPropA>
<mainPropB>Main Property B</mainPropB>
<elements>
<propA>Property A1</propA>
<propB>Property B1</propB>
<propA>Property A2</propA>
<propB>Property B2</propB>
...
</elements>
</main>
所以在这种情况下我的Java代码应该是这样的:
public class MainClass {
private String mainPropA;
private String mainPropB;
private List<Element> elements;
}
public class Element {
private String propA;
private String propB;
}
我无法弄清楚如何映射这个。
我尝试了以下映射,可以在列表中填充第一个元素,但不能填充其他元素。
@XmlRootElement(name = "main")
@XmlAccessorType(XmlAccessType.FIELD)
public class MainClass {
private String mainPropA;
private String mainPropB;
@XmlElement(name = "elements")
private List<Element> elements;
}
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Element {
private String propA;
private String propB;
}
我尝试了各种注释组合,但上面的注释使我最接近于看到除null之外的其他内容。
有没有办法让它发挥作用?
我无法更改即将发布的XML,因此无法使用。
我正在使用JAXB,但我没有以任何方式束缚它。同样使用Java 7,如果这有任何区别。
答案 0 :(得分:0)
试试这个
@XmlRootElement(name = "main")
@XmlAccessorType(XmlAccessType.FIELD)
public class MainClass {
@XmlElement(name = "mainPropA")
private String title;
@XmlElement(name = "mainPropB")
private String author;
private Elements elements;
@XmlAccessorType(XmlAccessType.FIELD)
static class Elements {
List<String> propA;
List<String> propB;
}
}
}