我正在尝试解析一个简单的XML文件,如下所示:
<customer id="100">
<age value=" 29"/>
<name value="Bob"/>
</customer>
我以这种方式使用了JAX库:
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Customer {
@XmlAttribute(name = "id")
String id;
@XmlAttribute(name = "value")
String value;
String name;
String age;
public String getName() {
return name;
}
@XmlElement(name = "value")
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
@XmlElement(name = "value")
public void setAge(String age) {
this.age = age;
}
public String getId() {
return id;
}
@XmlElement(name = "id")
public void setId(String id) {
this.id = id;
}
}
有一个IllegalAnnotationExceptions。 我被此链接here过期,但未成功。
答案 0 :(得分:1)
由于“名称”和“年龄”值实际上是子节点的属性,因此应将其提取到单独的类中:
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public static class Customer {
@XmlAttribute
String id;
@XmlElement
NameAgeValue name;
@XmlElement
NameAgeValue age;
public String getId() {
return id;
}
public String getAge() {
return (age == null) ? null : age.value;
}
public String getName() {
return (name == null) ? null : name.value;
}
}
@XmlType
public static class NameAgeValue {
@XmlAttribute
String value;
}