Java 意外元素(uri:“元素”,local:“元素”)。预期要素为<;{}链接>&书信电报;{}大小>;
尝试解组此xml时:Java 意外元素(uri:“元素”,local:“元素”)。预期要素为<;{}链接>&书信电报;{}大小>;,java,jaxb,eclipselink,jaxb2,moxy,Java,Jaxb,Eclipselink,Jaxb2,Moxy,尝试解组此xml时: <holder> <name>a</name> <elements> <element> <name>elem</name> </element> </elements> </holder> 包装器 抽象包装器扩展ElementRoot并具有totalSize成员 public abstract class Wra
<holder>
<name>a</name>
<elements>
<element>
<name>elem</name>
</element>
</elements>
</holder>
包装器
抽象包装器扩展ElementRoot并具有totalSize成员
public abstract class Wrapper<T> extends ElementRoot {
protected int totalSize;
protected List<T> collection = new ArrayList<>();
@XmlElement
public int getTotalSize() {
return totalSize;
}
public void setTotalSize(int totalSize) {
this.totalSize = totalSize;
}
public abstract List<T> getCollection();
}
元素
元素扩展了包装器并具有元素的集合
import java.util.Collection;
import javax.xml.bind.annotation.*;
@XmlRootElement(name = "elements)
public class Elements extends Wrapper {
@Override
@XmlElement(name="element")
public Collection<Element> getElements() {
return elements;
}
// No setter, to add getElements().add(element)
}
环境
我正在使用Java7
:
JAXB-api 2.2.7
MOXy 2.5.0
这个用例中似乎有一个与抽象
getCollecion
属性相关的bug。我们已打开以下错误,您可以使用它跟踪我们在该问题上的进展:
@xmlacessortype(xmlacesstype.NONE)
,以便只处理带注释的字段/属性(请参阅:)
根据您的描述,我在您的问题中添加了一些模型类。如何对这些类进行注释?另外,元素
数据存储
应该出现在您的XML输入中的什么位置?数据存储
是从原始数据中遗留下来的,我简化了层次结构。谢谢
import java.util.Collection;
import javax.xml.bind.annotation.*;
@XmlRootElement(name = "elements)
public class Elements extends Wrapper {
@Override
@XmlElement(name="element")
public Collection<Element> getElements() {
return elements;
}
// No setter, to add getElements().add(element)
}
@XmlRootElement(name = "element")
@XmlType(propOrder = {"id", "name"})
public class Element extends ElementRoot {
private Integer id;
private String name;
// setters and getters no annotated
}
JAXB-api 2.2.7
MOXy 2.5.0
import java.util.*;
import javax.xml.bind.annotation.*;
@XmlAccessorType(XmlAccessType.NONE)
public abstract class Wrapper<T> extends ElementRoot {
protected int totalSize;
protected List<T> collection = new ArrayList<>();
@XmlElement
public int getTotalSize() {
return totalSize;
}
public void setTotalSize(int totalSize) {
this.totalSize = totalSize;
}
public abstract List<T> getCollection();
}
import java.util.*;
import javax.xml.bind.annotation.*;
@XmlRootElement(name = "elements")
@XmlAccessorType(XmlAccessType.PUBLIC_MEMBER)
public class Elements extends Wrapper {
@Override
@XmlElement(name="element")
public List<Element> getCollection() {
return collection;
}
// No setter, to add getElements().add(element)
}