当前位置: 首页 > 知识库问答 >
问题:

Java用JAXB解封对象列表

翟永春
2023-03-14

我有如下所示的XML:

<?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>

我有一个ObjectList类,它如下所示:

@XmlRootElement
public class ObjectList {

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

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

    public void html" target="_blank">setObjectList(ArrayList<Object> objectList) {
        ObjectList = objectList;
    }
}

和如下所示的对象类:

@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;
    }
}

当我尝试使用以下代码将xml解封到and对象中时:

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

RESTResponse response = getObjects();

ObjectList objects = (ObjectList) unmarshaller.unmarshal(new StringReader(response.getResponseBody()));

我得到以下错误:

UnMarshalException:意外元素(URI:“”,本地:“ObjectList”)。需要的元素为<{}Object>、<{}ObjectList>

编辑:我刚刚注意到两个问题我将我的ObjectList对象的XmlRootElement标记更改为@XmlRootElement(名称=“ObjectList”)并且将我的对象的XmlRootElement标记更改为@XmlRootElement(名称=“object”)。

非常感谢任何帮助。

共有1个答案

咸承教
2023-03-14

好吧,它说的是预期元素:objectobjectlist(以小写“O”开头),但它读的是objectlist(以大写“O”开头)!

 类似资料:
  • 我对JAXB很陌生,在解封一般对象时遇到了麻烦。问题是我需要能够封送和解封任何对象(java.lang.object)。我成功地进行了封送处理,但是当我运行解封处理时,响应中得到的是一个“ElementNSimpl”对象,而不是我自己的对象。 这是涉及的bean: message.java somebean.java jaxb.index的内容: 生成的xml很好()但是在解封后计算“msg.ge

  • 从 BaseX 服务器执行的 X 查询中,我得到这样的结果: 我需要用JAXB将这个结果转换成Protocollo对象的列表,以便用JList显示它们。因此,在这里的一次讨论之后,我声明了下面的类: 和 最后,我这样执行对话: 我不断得到这个例外: 我想我在注释方面犯了一些错误。你能帮忙吗?

  • 我有 和Xlink类,该类在内联变量中工作良好。 对于的XML输入 并且子课程拒绝被取消注册(没有任何异常被抛出)。 注:不幸的是,MOXy不是一个选项。 编辑:新编组对象 Edit2:在对测试对象进行了一些解组和编组的实验之后,我发现我需要在内容的标题中定义xmlns名称空间,以便与类似问题在于,我从一个包装类中获取Course元素,该包装类由resteasy解析出来。因此,生成的类不会携带名称

  • 同样,在导出时没有错误。问题是getCityWeatherbyZipresponse.getCityWeatherbyZipResult的值为null。我知道文档正在返回正确的结果,因为结果打印如下: 结果打印输出: 测试Web服务:http://wsf.cdyne.com/weatherws/weather.asmx 子umarshal对象:

  • 问题内容: 我有看起来像下面的XML: 我有一个如下的ObjectList类: 还有一个对象类,如下所示: 当我尝试使用以下代码将xml解组为和对象时: 我收到以下错误: javax.xml.bind.UnmarshalException:意外元素(uri:“”,本地:“ ObjectList”)。期望的元素是<{} Object>,<{} objectList> 编辑: 我只是注意到几个问题,我

  • 我有这些课程: 用户 地址 输出 我如何解决这个问题?我是否可以使用一些JAXB注释?怎么做?还是需要创建某种类型的XmlAdapter?(我试过这个,但没有成功……)