我的XML看起来像这样:
<thing>
<property key='name' value='Foo' />
</thing>
我想阅读使用JAXB。
我知道我可以做到
@XmlRootElement(name="thing")
public class Thing{
@XmlElement(name="name")
public String name;
}
如果XML看起来像
<thing>
<name>Foo</name>
</thing>
,但我该如何处理上面的XML布局呢?
答案 0 :(得分:1)
注意:我是EclipseLink JAXB (MOXy)负责人,也是JAXB 2.X(JSR-222)专家组的成员。
您可以在此用例中使用MOXy的@XmlPath
扩展名:
@XmlRootElement(name="thing")
public class Thing{
@XmlPath("property[@key='name']/@value")
public String name;
}
更多信息:
答案 1 :(得分:0)
如果我没有错,我们需要创建2个类,一个用于物品,另一个用于属性,如下所示
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {"property"})
@XmlRootElement(name = "thing")
public class Thing {
@XmlElement(required = true)
protected Property property;
public Property getProperty() {
return property;
}
public void setProperty(Property value) {
this.property = value;
}
}
,另一个班级将是
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "")
@XmlRootElement(name = "property")
public class Property {
@XmlAttribute(required = true)
protected String key;
@XmlAttribute(required = true)
protected String value;
public String getKey() {
return key;
}
public void setKey(String value) {
this.key = value;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}