Java 使用集合的集合生成XML

Java 使用集合的集合生成XML,java,xml,jaxb,Java,Xml,Jaxb,我想生成各种集合的集合。都有一个公共父级,每个都有一个@XMLRootElement: @XmlRootElement("as") public class As extends DTOs { @XmlElement("a") private Collection collection; // } 元素中的注释应该是什么来创建: <as> <a> <name> </a>

我想生成各种集合的集合。都有一个公共父级,每个都有一个
@XMLRootElement

@XmlRootElement("as")
public class As extends DTOs {
    @XmlElement("a")
    private Collection collection;
    //
}




元素
中的注释应该是什么来创建:

<as>
     <a>
         <name>
     </a>
     <bs>
         <b><foo/></b>
     <bs>
     <cs>
         <c/>
     </cs>
</as>

我的第一次尝试是
@xmlanyement(lax=true)
,但由于“非法注释”,这是一个异常。我想这是由于与具体对象中的
@xmlement
发生了冲突

添加
@xmlementref
时,它会在运行时使用

无法将类型“com.example.Bs”封送为元素,因为它缺少
@XmlRootElement
注释


我认为这可能是继承造成的。

您应该定义模式并使用此模式生成JAXB类。使用这些类,您可以进行与XML之间的转换

您应该定义模式并使用此模式生成JAXB类。使用这些类,您可以进行与XML之间的转换

如果您有一个公共根,可以使用@xmlementref:

如果没有公共根,则可以使用@xmlanyement(lax=true):


如果您有一个公共根目录,可以使用@xmlementref:

如果没有公共根,则可以使用@xmlanyement(lax=true):


我添加了“jaxb”标记并删除了“sax…”标记,因为我认为这更符合您的要求,如果不符合,请更正标记。您是否尝试过先创建一个XSD,然后生成相应的Java类(这可能会让您的生活更轻松)?为什么要提出关于同一主题的新问题?为什么不修改上一个问题?删除上一个问题。我认为这一点很清楚。我认为使用方法更聪明。请将其简化为最少的类,以突出问题,提供3个方面:源代码、实际的XML和预期的XML。这将有助于帮助者,也不会让仇恨者讨厌。我添加了“jaxb”标记并删除了“sax…”标记,因为我想这更符合您的要求,如果不符合,请更正标记。您是否尝试过先创建一个XSD,然后生成相应的Java类(这可能会让您的生活更轻松)?为什么要提出关于同一主题的新问题?为什么不修改上一个问题?删除上一个问题。我认为这一点很清楚。我认为使用方法更聪明。请将其简化为最少的类,以突出问题,提供3个方面:源代码、实际的XML和预期的XML。这将有助于帮助者,并且不会让仇恨者憎恨。我只想通过注释来实现它。没有模式,但谢谢你的回答。我只想用注释来实现它。没有模式,但谢谢你的回答
@XmlRootElement("b")
public class B extend DTO {
}
public class DTOs extends DTO {
}
public class Element Extend DTO{

    private Collection collection;

    @XmlElementRef
    getCollection() {
        return collection;
    }
}
<as>
     <a>
         <name>
     </a>
     <bs>
         <b><foo/></b>
     <bs>
     <cs>
         <c/>
     </cs>
</as>