有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java moxy jaxb:映射成员属性

我试图用xml绑定文件(jaxb moxy)映射以下类:

public class A{
   private String name;
   private B b;
   .....
}


public class B{
   private String surname;
}

在绑定文件中,我有:

....
<java-type name="A" xml-accessor-type="NONE">
      <java-attributes>
           <xml-element java-attribute="b$surname" name="surname"/>
           <xml-element java-attribute="name" name="name"/>
      </java-attributes>
</java-type>
....

不幸的是,生成的xml的姓氏字段总是空的(我记录了这个错误消息:忽略类[A]上的属性[b$LANSAME],因为没有为它生成属性)

你能帮我理解如何映射成员属性吗

提前谢谢


共 (1) 个答案

  1. # 1 楼答案

    如果您希望获得以下XML文档:

    <a>
        <surname>Doe</surname>
        <name>Jane</name>
    </a>
    

    对于您在问题中发布的类,您可以使用以下映射文档。在本文档中,您将b字段映射到surname元素,然后将B类上的单个字段映射到@XmlValue

    <?xml version="1.0"?>
    <xml-bindings
        xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm"
        package-name="forum22788599"
        xml-accessor-type="FIELD">
        <java-types>
            <java-type name="A">
                <xml-root-element/>
                <xml-type prop-order="b name"/>
                <java-attributes>
                    <xml-element java-attribute="b" name="surname"/>
                    <xml-element java-attribute="name"/>
                </java-attributes>
            </java-type>
            <java-type name="B">
                <java-attributes>
                    <xml-value java-attribute="surname"/>
                </java-attributes>
            </java-type>
        </java-types>
    </xml-bindings>