我在尝试将嵌套元素映射到同一个Java类时遇到了麻烦.
XML
我在这里要做的是将id属性和text元素设置为SlideText类.
<module name="test project">
<slide id="1">
<layout>
<text>hello</text>
</layout>
</slide>
</module>
Run Code Online (Sandbox Code Playgroud)
模块类
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Module {
@XmlAttribute
private String name;
@XmlElements({
@XmlElement(name = "slide", type = SlideText.class)
})
private Slide slide;
}
Run Code Online (Sandbox Code Playgroud)
幻灯片课程
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public abstract class Slide {
@XmlAttribute
private String id;
}
Run Code Online (Sandbox Code Playgroud)
SlideText类
我尝试使用@XmlElementWrapperon text属性,但是我得到一个@XmlElementWrapper只能应用于集合的异常.
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class SlideText extends Slide {
// how to map this to layout/text elements?
private String text;
}
Run Code Online (Sandbox Code Playgroud)
有没有办法映射<layout><text>hello</text></layout>到SlideText的text财产?
谢谢.
UPDATE
为了说明我在这里要完成的任务,幻灯片可以是任何类型,具体取决于使用的布局.A module知道它是a slide但它不知道它是什么幻灯片,这就是为什么我有抽象Slide类.
基本上,如果这有效,我将创造SlideImage并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>
Run Code Online (Sandbox Code Playgroud)
如果您使用EclipseLink JAXB (MOXy),那么您可以利用 @XmlPath 扩展来实现此目的(我是 MOXy 技术负责人):
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import org.eclipse.persistence.oxm.annotations.XmlPath;
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class SlideText extends Slide {
@XmlPath("layout/text/text()")
private String text;
}
Run Code Online (Sandbox Code Playgroud)
使用标准 JAXB,您可以利用 XmlAdapter:
| 归档时间: |
|
| 查看次数: |
5951 次 |
| 最近记录: |