2012-02-29 75 views
1

我想生成各种集合的集合。所有具有共同家长和每一个@XMLRootElement使用集合集合生成XML

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

@XmlRootElement("bs") 
public class Bs extends DTOs { 
    @XmlElement("b") 
    private Collection collection; 
    // 
} 

@XmlRootElement("b") 
public class B extend DTO { 
} 

public class DTOs extends DTO { 
} 

public class Element Extend DTO{ 

    private Collection collection; 

    @XmlElementRef 
    getCollection() { 
     return collection; 
    } 
} 

应该是什么在Element的annonations创建:

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

我第一次尝试是@XmlAnyElement(lax=true)但thew异常因“非法注释”。我想这是因为与具体物体中的@XmlElement发生碰撞。

当加入@XmlElementRef它在运行时,因为它缺少一个@XmlRootElement注释抱怨与

不能编组型“com.example.Bs”为元素

我认为这可能归因于继承。

+1

我加了th e'jaxb'标签,并删除了'sax ...'标签,因为我猜这更符合您的要求,如果不是,请更正标签。你是否尝试先创建一个XSD,然后生成相应的Java类(这可能会让你的生活更轻松)? – home 2012-02-29 19:01:31

+1

为什么关于同一主题的新问题?为什么不修改你之前的问题? – 2012-02-29 19:01:53

+0

删除了前一个。我认为这个更清晰 – ssedano 2012-02-29 19:08:26

回答

0

您应该定义架构并使用此架构来生成JAXB类。借助这些类,您可以进行XML和XML的转换。

+0

我想只用注解来实现它。没有模式,但感谢您的回答 – ssedano 2012-02-29 19:58:55