如何通过Javax.xml库解析XML标签

时间:2019-05-28 11:33:10

标签: java xml parsing tags

我正在尝试解析一个简单的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过期,但未成功。

1 个答案:

答案 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;
}