将自定义值添加到外部绑定(JAXB-MOXY实现)

用户名

我想将Java对象编组为XML。对于这种方法,我将JAXB Moxy与外部XML绑定文件一起使用。

这是我想要编组为XML的示例类:

public class Customer {
  private String lastname;
  private String firstname;

  //getters and setters
}

使用我的外部绑定文件,我可以访问此类的值,以便获得以下XML输出:

<?xml version="1.0"?>
<customer>
  <firstname>Tony</firstname>
  <lastname>Stark</lastname>
</customer>

现在,我想添加一个具有自定义值的自定义标记,该值在java类中未指定。因此,对于上述Customer类,我想要这样的XML输出:

<?xml version="1.0"?>
<customer>
  <firstname>Tony</firstname>
  <lastname>Stark</lastname>
  <birthdate>01.01.1990</birthdate>
</customer>

出生日期不在“客户”类中,我也不想在其中添加它,因为该类是由脚本自动生成的。我的目标是使用外部绑定文件中的自定义值定义生日。JAXB MOXY实现是否有可能?希望可以有人帮帮我。

博多安

下面是一种可以利用XmlAdapter来执行此操作的方法:

XmlAdapter(LastNameAdapter)

import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.adapters.XmlAdapter;

public class LastNameAdapter extends XmlAdapter<LastNameAdapter.AdaptedLastName, String> {

    @XmlType(propOrder={"lastname", "birthdate"})
    public static class AdaptedLastName {
        public String lastname;
        public String birthdate;
    }

    private String birthdate;

    public LastNameAdapter() {
    }

    public LastNameAdapter(String birthdate) {
        this.birthdate = birthdate;
    }

    @Override
    public String unmarshal(AdaptedLastName v) throws Exception {
        return v.lastname;
    }

    @Override
    public AdaptedLastName marshal(String v) throws Exception {
        AdaptedLastName adaptedLastName = new AdaptedLastName();
        adaptedLastName.lastname = v;
        adaptedLastName.birthdate = birthdate;
        return adaptedLastName;
    }

}

外部元数据(oxm.xml)

<?xml version="1.0"?>
<xml-bindings
    xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm"
    package-name="forum19641824">
    <java-types>
        <java-type name="Customer">
            <xml-root-element/>
            <xml-type prop-order="firstname lastname"/>
            <java-attributes>
                <xml-element java-attribute="firstname"/>
                <xml-element java-attribute="lastname" xml-path=".">
                    <xml-java-type-adapter value="forum19641824.LastNameAdapter"/>
                </xml-element>
            </java-attributes>
        </java-type>
    </java-types>
</xml-bindings>

演示版

import java.util.*;
import javax.xml.bind.*;
import org.eclipse.persistence.jaxb.JAXBContextProperties;

public class Demo {

    public static void main(String[] args) throws Exception {
        Map<String, Object> properties = new HashMap<String, Object>(1);
        properties.put(JAXBContextProperties.OXM_METADATA_SOURCE, "forum19641824/oxm.xml");
        JAXBContext jc = JAXBContext.newInstance(new Class[] {Customer.class}, properties);

        Customer customer = new Customer();
        customer.setFirstname("Tony");
        customer.setLastname("Stark");

        Marshaller marshaller = jc.createMarshaller();
        marshaller.setAdapter(new LastNameAdapter("01.01.1990"));
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
        marshaller.marshal(customer, System.out);
    }

}

输出量

<?xml version="1.0" encoding="UTF-8"?>
<customer>
   <firstname>Tony</firstname>
   <lastname>Stark</lastname>
   <birthdate>01.01.1990</birthdate>
</customer>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用MOXY的JAXB实现,该实现基于飞行映射使用基于+的注释

来自分类Dev

将自定义动词添加到ToolStrip设计器中,而无需重新实现ToolStripDesigner

来自分类Dev

将自定义动词添加到ToolStrip设计器中,而无需重新实现ToolStripDesigner

来自分类Dev

使用Moxy作为JAXB实现并使用多个POJO包设置jaxb.properties

来自分类Dev

使用Moxy作为JAXB实现,并使用多个POJO包设置jaxb.properties

来自分类Dev

将自定义键绑定添加到XCode

来自分类Dev

使用适配器将类编组到具有MOXy或任何其他JAXB实现的根元素

来自分类Dev

将自定义控件绑定到外部按钮

来自分类Dev

如何将自定义安全绑定凭证添加到Web服务参考?

来自分类Dev

如何将自定义属性添加到用户控件以进行绑定?

来自分类Dev

如何将自定义安全绑定凭证添加到Web服务参考?

来自分类Dev

将自定义标头添加到“请求”

来自分类Dev

Hibernate将自定义前缀添加到目录

来自分类Dev

将自定义函数添加到类

来自分类Dev

将自定义类添加到引导按钮

来自分类Dev

无法将自定义字体添加到Xcode

来自分类Dev

将自定义属性添加到Serilog

来自分类Dev

pyqt:将自定义列添加到QFileSystemModel

来自分类Dev

将自定义视图添加到警报视图

来自分类Dev

将自定义别名添加到.zshrc

来自分类Dev

将自定义标签添加到TIFF文件

来自分类Dev

将自定义代码段添加到emmet

来自分类Dev

将自定义Gradle插件添加到项目

来自分类Dev

将自定义数字添加到ggplot图例

来自分类Dev

将自定义属性添加到SimpleSAMLPhp

来自分类Dev

将自定义字段添加到Django admin

来自分类Dev

将自定义消息添加到TestNG失败

来自分类Dev

将自定义字体添加到GUI SWT

来自分类Dev

将自定义路线添加到Apigility

Related 相关文章

  1. 1

    使用MOXY的JAXB实现,该实现基于飞行映射使用基于+的注释

  2. 2

    将自定义动词添加到ToolStrip设计器中,而无需重新实现ToolStripDesigner

  3. 3

    将自定义动词添加到ToolStrip设计器中,而无需重新实现ToolStripDesigner

  4. 4

    使用Moxy作为JAXB实现并使用多个POJO包设置jaxb.properties

  5. 5

    使用Moxy作为JAXB实现,并使用多个POJO包设置jaxb.properties

  6. 6

    将自定义键绑定添加到XCode

  7. 7

    使用适配器将类编组到具有MOXy或任何其他JAXB实现的根元素

  8. 8

    将自定义控件绑定到外部按钮

  9. 9

    如何将自定义安全绑定凭证添加到Web服务参考?

  10. 10

    如何将自定义属性添加到用户控件以进行绑定?

  11. 11

    如何将自定义安全绑定凭证添加到Web服务参考?

  12. 12

    将自定义标头添加到“请求”

  13. 13

    Hibernate将自定义前缀添加到目录

  14. 14

    将自定义函数添加到类

  15. 15

    将自定义类添加到引导按钮

  16. 16

    无法将自定义字体添加到Xcode

  17. 17

    将自定义属性添加到Serilog

  18. 18

    pyqt:将自定义列添加到QFileSystemModel

  19. 19

    将自定义视图添加到警报视图

  20. 20

    将自定义别名添加到.zshrc

  21. 21

    将自定义标签添加到TIFF文件

  22. 22

    将自定义代码段添加到emmet

  23. 23

    将自定义Gradle插件添加到项目

  24. 24

    将自定义数字添加到ggplot图例

  25. 25

    将自定义属性添加到SimpleSAMLPhp

  26. 26

    将自定义字段添加到Django admin

  27. 27

    将自定义消息添加到TestNG失败

  28. 28

    将自定义字体添加到GUI SWT

  29. 29

    将自定义路线添加到Apigility

热门标签

归档