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加密
 
