我在尝试将嵌套元素映射到同一个 Java 类时遇到问题。
XML
我在这里想做的是设置id
属性和text
元素进入SlideText
class.
<module name="test project">
<slide id="1">
<layout>
<text>hello</text>
</layout>
</slide>
</module>
模块类
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Module {
@XmlAttribute
private String name;
@XmlElements({
@XmlElement(name = "slide", type = SlideText.class)
})
private Slide slide;
}
幻灯片课
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public abstract class Slide {
@XmlAttribute
private String id;
}
幻灯片文本类
我尝试使用@XmlElementWrapper
on text
财产,但我得到一个例外@XmlElementWrapper
只能应用于集合。
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class SlideText extends Slide {
// how to map this to layout/text elements?
private String text;
}
有没有办法映射<layout><text>hello</text></layout>
into SlideText
's text
财产?
Thanks.
UPDATE
为了说明我在这里想要完成的任务,幻灯片可以是任何类型,具体取决于所使用的布局。 Amodule
知道这是一个slide
但它不知道它是什么幻灯片,这就是为什么我有摘要Slide
class.
本质上,如果这有效,我将创建SlideImage
and SlideTextVideo
延伸Slide
.
实际的 XML 文件如下所示:-
<module name="test project">
<slide id="1">
<layout-text>
<text>hello</text>
</layout-text>
</slide>
</module>
<module name="test project">
<slide id="2">
<layout-image>
<image-path>img.jpg</image-path>
</layout-image>
</slide>
</module>
<module name="test project">
<slide id="3">
<layout-text-video>
<text>hello</text>
<video-path>a.mp4</video-path>
</layout-text-video>
</slide>
</module>