gpt4 book ai didi

java - 在 maven-jaxb2-plugin 中插入自定义 setter

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:15:34 26 4
gpt4 key购买 nike

我正在使用 org.jvnet.jaxb2.maven2:maven-jaxb2-plugin从 XSD 架构文件创建 POJO。

现在我想插入一些类似自定义 setter 的东西。它应该修剪所有字符串并删除某些字符。

你知道怎么做吗?


XJB 文件:

<?xml version="1.0" encoding="UTF-8"?>
<jaxb:bindings version="2.0" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc">
<jaxb:bindings schemaLocation="my-schema-xml4.xsd" node="/xs:schema">
<xjc:javaType name="java.lang.String" adapter="my.StringAdapter" />
</jaxb:bindings>
</jaxb:bindings>

绑定(bind)Java类型的解决方案:

<?xml version="1.0" encoding="UTF-8" ?>
<bindings version="2.0" xmlns="http://java.sun.com/xml/ns/jaxb" xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc">
<bindings schemaLocation="mySchema-xml4.xsd" node="/xs:schema">
<globalBindings>
<xjc:javaType name="java.lang.String" xmlType="xs:string"
adapter="com.name.MyAdapter" />
<xjc:javaType name="java.lang.String" xmlType="xs:anySimpleType"
adapter="com.name.MyAdapter" />
</globalBindings>
</bindings>
</bindings>

但是 @XmlJavaTypeAdapter 仍然没有添加到具有混合内容的节点的 content 属性中,尽管该属性的类型为 java.lang.String

最佳答案

我认为实现此目的的最佳方法是实现自己的 XmlAdapter 并通过属性自定义对其进行配置。您可以使用标准的 jaxb:property 自定义或使用 annotate plugin 来完成此操作.

jaxb:属性:

  <jaxb:property>
<jaxb:baseType>
<xjc:javaType name="java.lang.String"
adapter="com.acme.foo.MyAdapter"/>
</jaxb:baseType>
</jaxb:property>

注释插件:

  <annox:annotate target="field">
<annox:annotate
annox:class="javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter"
value="com.acme.foo.MyAdapter"/>
</annox:annotate>

在此处查看示例项目:

https://svn.java.net/svn/jaxb2-commons~svn/basics/trunk/tests/one/

关于java - 在 maven-jaxb2-plugin 中插入自定义 setter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7329881/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com