gpt4 book ai didi

java - 用于覆盖或删除 XMLSchemaType xs :token 的 JAXB 绑定(bind)

转载 作者:太空宇宙 更新时间:2023-11-04 07:23:46 26 4
gpt4 key购买 nike

我正在使用 Maven jaxb2 插件从 xsd 生成模型类。 xsd 使用 type=xs:token 指定某些元素,如下所示:

<xs:element name="medium_text" type="xs:token"/>

这会导致以下注释被添加到生成模型的字段中:

@XmlJavaTypeAdapter(CollapsedStringAdapter.class)
@XmlSchemaType(name="token")
protected String medium_text;

问题是 CollapsedStringAdapter 删除了新行等(这是 xs:token 的正确行为),但我想避免这种情况。

如何使用 JAXB 绑定(bind)从元素中删除 xs:token 类型或将其更改为 xs:string?简单的解决方案是从 xsd 中删除类型,但是是否可以在不修改 xsd 的情况下使用绑定(bind)?

最佳答案

您可以在绑定(bind)文件中使用以下内容。

<jxb:bindings schemaLocation = "schema.xsd">
<jxb:bindings node = "//xs:element[@name='medium_text']">
<jxb:javaType name="java.lang.String"/>
</jxb:bindings>
</jxb:bindings>

这会产生以下结果:

@XmlElement(name = "mid_text", required = true)
@XmlJavaTypeAdapter(Adapter1 .class)
@XmlSchemaType(name = "token")
protected String midText;

但是 Adapter1 是无害的,并且不会更改字符串值。

此外,如果您想对所有 token 执行此操作,您可以添加globalBinding

  <jxb:globalBindings>
<jxb:javaType name="java.lang.String"
xmlType="xs:token" />
</jxb:globalBindings>

关于java - 用于覆盖或删除 XMLSchemaType xs :token 的 JAXB 绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18894572/

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