Unc*_*ter 13 java jaxb marshalling
我想知道是否有可能让JAXB不为用作包装器的XML元素创建Java对象.例如,对于以下结构的XML
<root>
<wrapper>
<entity/>
</wrapper>
</root>
Run Code Online (Sandbox Code Playgroud)
我根本不想要<wrapper>创建一个对象.所以对于像这样的课程
class Root {
private Entity entity;
}
Run Code Online (Sandbox Code Playgroud)
该<entity>元件应直接解组到实体字段.
是否可以使用JAXB实现?
虽然它需要额外的编码,但是使用瞬态包装器对象以下列方式完成所需的解组:
@XmlRootElement(name = "root")
public class Root {
private Entity entity;
static class Entity {
}
static class EntityWrapper {
@XmlElement(name = "entity")
private Entity entity;
public Entity getEntity() {
return entity;
}
}
@XmlElement(name = "wrapper")
private void setEntity(EntityWrapper entityWrapper) {
entity = entityWrapper.getEntity();
}
}
Run Code Online (Sandbox Code Playgroud)
EclipseLink MOXy提供了带扩展的JAXB 2.2实现.扩展功能之一是使用XPath来浏览您在域模型中不需要的XML层.
如果你看看:
http://wiki.eclipse.org/EclipseLink/Examples/MOXy/GettingStarted/MOXyExtensions
您会注意到客户的名称存储在其中,但该名称是Customer的String属性.这是通过以下方式完成
@XmlPath("personal-info/name/text()")
public String getName() {
return name;
}
Run Code Online (Sandbox Code Playgroud)
我希望这有帮助,
道格
| 归档时间: |
|
| 查看次数: |
12556 次 |
| 最近记录: |