Вопрос по jaxb, java – Java Unmarshal список объектов с JAXB

2

У меня есть XML, который выглядит следующим образом:

<code><?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ObjectList>
  <object attributeOne="somedate" attributeTwo="false" attributeThree="id" attributeFour="true"/>
  <object attributeOne="somedate" attributeTwo="false" attributeThree="id" attributeFour="true"/>
  <object attributeOne="somedate" attributeTwo="false" attributeThree="id" attributeFour="true"/>
  <object attributeOne="somedate" attributeTwo="false" attributeThree="id" attributeFour="true"/>
  <object attributeOne="somedate" attributeTwo="false" attributeThree="id" attributeFour="true"/>
</ObjectList>
</code>

У меня есть класс ObjectList, который выглядит следующим образом:

<code>@XmlRootElement
public class ObjectList {

    @XmlElementWrapper(name = "ObjectList")
    @XmlElement(name = "Object")
    private ArrayList<Object> ObjectList;

    public ArrayList<Object> getObjectList() {
        return ObjectList;
    }

    public void setObjectList(ArrayList<Object> objectList) {
        ObjectList = objectList;
    }
}
</code>

И класс объекта, который выглядит так:

<code>@XmlRootElement(name = "Object")
public class Object {

    Date attributeOne;
    boolean attritbuteTwo;
    String attributeThree;
    boolean attributeFour;

    @XmlAttribute
    public Date getAttributeOne() {
        return attributeOne;
    }
    public void setAttributeOne(Date attributeOne) {
        this.attributeOne = attributeOne;
    }

    @XmlAttribute
    public boolean isAttributeTwo() {
        return attritbuteTwo;
    }
    public void setAttributeTwo(boolean attritbuteTwo) {
        this.AttributeTwo = AttributeTwo;
    }

    @XmlAttribute
    public String getAttributeThree() {
        return attributeThree;
    }
    public void setAttributeThree(String attributeThree) {
        this.attributeThree = attributeThree;
    }

    @XmlAttribute
    public boolean isAttributeFour() {
        return attributeFour;
    }
    public void setAttributeFour(boolean attributeFour) {
        this.attributeFour = attributeFour;
    }
}
</code>

Когда я пытаюсь разархивировать XML в и объект, используя этот код:

<code>JAXBContext jaxbContext = JAXBContext.newInstance(ObjectList.class);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();

RESTResponse response = getObjects();

ObjectList objects = (ObjectList) unmarshaller.unmarshal(new StringReader(response.getResponseBody()));
</code>

Я получаю следующую ошибку:

javax.xml.bind.UnmarshalException: неожиданный элемент (uri: & quot; & quot ;, local: & quot; ObjectList & quot;). Ожидаемые элементы: & lt; {} Object & gt;, & lt; {} objectList & gt;

EDIT: I just noticed a couple problems I changed the XmlRootElement tag of my ObjectList object to @XmlRootElement(name = "ObjectList") and the XmlRootElement tag of my Object to @XmlRootElement(name = "object). I no longer get the exception, however I get and empty list of objects now.

Буду признателен за любую оказанную помощь.

Ваш Ответ

2   ответа
0

вы должны попытаться изменить имя вашего пользовательского класса сObject к другому? Или убедитесь, что правильный экземплярObject используется вObjectList учебный класс

Error: User Rate Limit Exceeded ferics2
3

Object или жеobjectList (начинающийся со строчной буквы "о"), но он читаетObjectList (начиная с заглавной буквы "O")!

Error: User Rate Limit Exceeded ferics2
Error: User Rate Limit Exceeded ferics2
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded

Похожие вопросы