Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JAXB:按特定顺序具有多个相同类型的标记_Java_Xml_Jaxb - Fatal编程技术网

Java JAXB:按特定顺序具有多个相同类型的标记

Java JAXB:按特定顺序具有多个相同类型的标记,java,xml,jaxb,Java,Xml,Jaxb,我有一种非常不寻常的XML格式需要整理和解整理: <a> <b></b> <c></c> <d></d> <c></c> <d></d> </a> 我本来希望工作但没有工作的代码是: @XmlAccessorType(XmlAccessType.NONE) @XmlType(propOrder={"b", "eList"}) @

我有一种非常不寻常的XML格式需要整理和解整理:

<a>
  <b></b>
  <c></c>
  <d></d>
  <c></c>
  <d></d>
</a>

我本来希望工作但没有工作的代码是:

@XmlAccessorType(XmlAccessType.NONE)
@XmlType(propOrder={"b", "eList"})
@XmlRootElement(name="a")
public class A {

    @XmlElement(name="b")
    private String b;

    @XmlElementRefs({
        @XmlElementRef(name="c", type=String.class),
        @XmlElementRef(name="d", type=String.class)
    })
    @XmlMixed
    private List<String> eList;
}
@xmlacessortype(xmlacesstype.NONE)
@XmlType(proporter={“b”,“eList”})
@XmlRootElement(name=“a”)
公共A类{
@xmlement(name=“b”)
私有字符串b;
@XmlElementRefs({
@xmlementref(name=“c”,type=String.class),
@xmlementref(name=“d”,type=String.class)
})
@混合
私人名单;
}
很遗憾,结果缺少正确的顺序(我需要b、c、d、c、d顺序):



我尝试了不同的方法,比如@XmlMixed,使用@XmlPath的子对象,但没有任何效果。有什么提示或链接吗?提前谢谢

我建议您采用以下解决方案

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "a", propOrder = {
    "bs",
    "cs",
    "ds"
})
@XmlRootElement(name = "a")
public class A
    implements Serializable
{

    private final static long serialVersionUID = 1234567890L;
    @XmlElement(name = "b")
    protected List<String> bs;
    @XmlElement(name = "c")
    protected List<String> cs;
    @XmlElement(name = "d")
    protected List<String> ds;

    public List<String> getBS() {
        if (bs == null) {
            bs = new ArrayList<String>();
        }
        return this.bs;
    }

    public List<String> getCS() {
        if (cs == null) {
            cs = new ArrayList<String>();
        }
        return this.cs;
    }


    public List<String> getDS() {
        if (ds == null) {
            ds = new ArrayList<String>();
        }
        return this.ds;
    }

}
@xmlacessortype(xmlacesstype.FIELD)
@XmlType(name=“a”,比例器={
“bs”,
“cs”,
“ds”
})
@XmlRootElement(name=“a”)
公共A类
实现序列化接口
{
私有最终静态长serialVersionUID=1234567890L;
@xmlement(name=“b”)
受保护名单;
@xmlement(name=“c”)
受保护名单;
@xmlement(name=“d”)
受保护名单;
公共列表getBS(){
如果(bs==null){
bs=新的ArrayList();
}
返回此文件。b;
}
公共列表getCS(){
如果(cs==null){
cs=新的ArrayList();
}
返回此.cs;
}
公共列表getDS(){
如果(ds==null){
ds=新的ArrayList();
}
把这个还给我;
}
}
您还可以应用xsd验证

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema elementFormDefault="qualified"
    targetNamespace="http://yourNamespace" xmlns="http://yourNamespace" xmlns:xs="http://www.w3.org/2001/XMLSchema">

   <xs:element name="a" type="a" />
    <xs:complexType name="a">
        <xs:sequence>
            <xs:element name="b" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
            <xs:element name="c" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
            <xs:element name="d" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
        </xs:sequence>
    </xs:complexType>

</xs:schema>


我不介意使用不同的JAXB提供程序。因此,使用MOXY等的建议是受欢迎的!你解决这个问题了吗?如果是,您是如何解决的?
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema elementFormDefault="qualified"
    targetNamespace="http://yourNamespace" xmlns="http://yourNamespace" xmlns:xs="http://www.w3.org/2001/XMLSchema">

   <xs:element name="a" type="a" />
    <xs:complexType name="a">
        <xs:sequence>
            <xs:element name="b" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
            <xs:element name="c" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
            <xs:element name="d" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
        </xs:sequence>
    </xs:complexType>

</xs:schema>