java – 使用JAXB根据属性创建引用对象
考虑以下xml:
<Config> <Paths> <Path reference="WS_License"/> </Paths> <Steps> <Step id="WS_License" title="License Agreement" /> </Steps> </Config> 以下JAXB类: public class Path { private String _reference; public String getReference() { return _reference; } @XmlAttribute public void setReference( String reference ) { _reference = reference; } } 和 public class Step { private String _id; private String _title; public String getId() { return _id; } @XmlAttribute public void setId( String id ) { _id = id; } public String getTitle() { return _title; } @XmlAttribute public void setTitle( String title ) { _title = title; } } 我不想将引用作为String存储在Path对象中,而是将其作为Step对象保存.这些对象之间的链接是reference和id属性. @XMLJavaTypeAdapter属性是否可行?任何人都可以如此善良地提供正确用法的例子吗? 谢谢! 编辑: 我也想用元素做同样的技术. 考虑以下xml: <Config> <Step id="WS_License" title="License Agreement"> <DetailPanelReference reference="DP_License" /> </Step> <DetailPanels> <DetalPanel id="DP_License" title="License Agreement" /> </DetailPanels> </Config> 以下JAXB类: @XmlAccessorType(XmlAccessType.FIELD) public class Step { @XmlID @XmlAttribute(name="id") private String _id; @XmlAttribute(name="title") private String _title; @XmlIDREF @XmlElement(name="DetailPanelReference",type=DetailPanel.class) private DetailPanel[] _detailPanels; //Doesn't seem to work } @XmlAccessorType(XmlAccessType.FIELD) public class DetailPanel { @XmlID @XmlAttribute(name="id") private String _id; @XmlAttribute(name="title") private String _title; } Step-object中的属性_detailPanels为空,链接似乎不起作用.是否有任何选项可以在不创建仅包含对DetailPanel的引用的新JAXB对象的情况下创建链接? 再次感谢 : )! 解决方法
您可以使用@XmlID将属性映射为键,使用@XmlIDREF将引用映射到此用例的键.
步 @XmlAccessorType(XmlAccessType.FIELD) public class Step { @XmlID @XmlAttribute private String _id; } 路径 @XmlAccessorType(XmlAccessType.FIELD) public class Path { @XmlIDREF @XmlAttribute private Step _reference; } 欲获得更多信息 > http://blog.bdoughan.com/2010/10/jaxb-and-shared-references-xmlid-and.html UPDATE
注意:我是EclipseLink JAXB (MOXy)领导者,也是JAXB (JSR-222)专家组的成员. 如果您使用MOXy作为JAXB(JSR-222)提供程序,那么您可以将@XmlPath批注用于您的用例. import javax.xml.bind.annotation.*; import org.eclipse.persistence.oxm.annotations.XmlPath; @XmlAccessorType(XmlAccessType.FIELD) public class Step { @XmlID @XmlAttribute private String id; @XmlPath("DetailPanelReference/@reference") @XmlIDREF // private List<DetailPanel> _detailPanels; // WORKS private DetailPanel[] _detailPanels; // See bug: http://bugs.eclipse.org/399293 } 欲获得更多信息 > http://bugs.eclipse.org/399293 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- java – org / codehaus / plexus / archiver / jar / JarA
- RobotFramework安装指南
- 关于Java中你所不知道的Integer详解
- java – 使用duplicate-finder插件重复资源错误
- java – 如果用booleans android语句
- 如何将按钮的文本调整为按钮的大小 – Java的Swing
- java – 使NetBeans(ant)为一个项目生成多个jar文件
- java – 从KeyStore传输PrivateKey,在OpenSSL中使用JNI
- java – 使用jaxb进行marshelling时使用派生类
- Java语言编写MD5加密方法,Jmeter如何给字符串MD5加密