java - moxy jaxb : mapping member attribute

标签 java xml jaxb moxy

我正在尝试将以下类映射到 xml 绑定(bind)文件 (jaxb-moxy):

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


public class B{
   private String surname;
}

在我的绑定(bind)文件中:

....
<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$surname],因为没有为其生成任何属性)。

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

提前致谢。

最佳答案

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

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

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

<?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>

关于java - moxy jaxb : mapping member attribute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22788599/

相关文章:

Java消息格式化

java - 使用 moxy 编码和解码更改 xml

java - 如何使用 JAX-B 将两个 XML 合并为一个?

java - java中输出时间戳的Util类

java - 单独的 httpsession 监听器实例是否与创建的每个 session 绑定(bind)?

C# 使用 XAdES 对 XML 文档进行签名

java - 实例化 hibernate 配置会抛出错误 : Exception in thread "main" java. lang.NoClassDefFoundError: javax/xml/bind/JAXBException

java - @XmlElementRef 问题 : Invalid XmlElementRef on property {property}, 引用的元素未声明

java - 简单 Java 类上的 Eclipse 编译器错误

java - 在 Java 中使用 XML 作为数据库