Как разобрать тег XML с помощью библиотеки Javax.xml - PullRequest
1 голос
/ 28 мая 2019

Я пытаюсь проанализировать простой 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.Я истек по этой ссылке: здесь , но безуспешно.

1 Ответ

1 голос
/ 28 мая 2019

Поскольку значения "name" и "age" на самом деле являются атрибутами дочерних узлов, вы должны извлечь его в отдельный класс, вроде:

@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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...