gpt4 book ai didi

xsd - 如何更改生成的 JAXB 类的 XmlType

转载 作者:行者123 更新时间:2023-12-04 16:45:19 28 4
gpt4 key购买 nike

我正在使用 gradle 基于 XML 模式文件生成 Java 类。我使用“org.glassfish.jaxb:jaxb-xjc:2.2.11”和“org.glassfish.jaxb:jaxb-runtime:2.2.11”作为依赖项,所以我可以使用“com.sun.tools.xjc”。 XJC2Task' 类来生成类。

这是架构文件:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="test"
targetNamespace="urn:oio:records:1.0.0"
xmlns="urn:oio:records:1.0.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">

<xs:element name="records" type="recordsType"/>
<xs:element name="record" type="recordType"/>

<xs:complexType name="recordsType">
<xs:sequence>
<xs:element ref="record" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="recordType">
<xs:attribute name="key" type="xs:string"/>
<xs:attribute name="value" type="xs:string"/>
</xs:complexType>
</xs:schema>

生成的类之一如下所示:
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlType;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "recordType")
public class RecordType {
@XmlAttribute(name = "key")
protected String key;
@XmlAttribute(name = "value")
protected String value;

public String getKey() {return key;}

public void setKey(String value) {this.key = value;}

public String getValue() {return value;}

public void setValue(String value) {this.value = value;}
}

如何更改 @XmlType 注释中的名称值?我希望它是
@XmlType(name = "record")

我曾尝试使用 bindingsfile 并尝试使用 <javaType>在 bindingsfile 中标记,但没有运气。

编辑:
我需要更改此设置的原因是我需要使用 Camel 中的 stax 拆分器拆分 XML 文件( http://camel.apache.org/stax.html 部分称为“使用 JAXB 和 StAX 迭代集合”)。
这会查看 @XmlType 的 name 属性。用于识别要在文件中拆分的 xml 标记的注释。识别出的标签( <record> )将被 JAXB 解析为 RecordType java 类。

最佳答案

@XmlType 注释中的名称是架构文件中 complexType 的名称。这就是为此注释定义参数“名称”的方式。

因此,如果要更改它,则必须更改架构中 complexType 的名称:

<xs:complexType name="record">
<xs:attribute name="key" type="xs:string"/>
<xs:attribute name="value" type="xs:string"/>
</xs:complexType>

关于xsd - 如何更改生成的 JAXB 类的 XmlType,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36692376/

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