从 xsd 创建一个静态变量

Create a static variable from an xsd

在我正在进行的项目中,我们从多个 xsd 生成 classes。我的一些 classes 需要 public static final String EXTENSION_CODE = "NAMEOFTHEEXTENSION";。我的 class 的 xsd 看起来像:

<xsd:complexType name="SomeExtension">
    <xsd:sequence>
        <xsd:element name="ID" type="xsd:string"  minOccurs="1" maxOccurs="1"/>
        <xsd:element name="element1" type="Class" minOccurs="0" maxOccurs="1" />
        <xsd:element name="element2" type="Class" minOccurs="0" maxOccurs="1" />
        <xsd:element name="element3" type="Class" minOccurs="0" maxOccurs="1" />
        <xsd:element name="element4" type="Class" minOccurs="0" maxOccurs="1" />
        <xsd:element name="otherID" type="xsd:string"  minOccurs="1" maxOccurs="1"/>
        <xsd:element name="element5" type="xsd:string"  minOccurs="0" maxOccurs="1"/>
    </xsd:sequence>
</xsd:complexType>

这将生成一个 class,看起来像:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "SomeExtension", propOrder = {
    "ID",
    "element1",
    "element2",
    "element3",
    "element4",
    "otherID",
    "element5"
})
public class SomeExtension
    implements Serializable, Cloneable, CopyTo
{

    private final static long serialVersionUID = 1L;
    @XmlElement(required = true)
    protected String iD;
    protected Element1 element1;
    protected Element2 element2;
    protected Element3 element3;
    protected Element4 element4;
    @XmlElement(required = true)
    protected String otherID;
    protected String element5;

我需要的是:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "SomeExtension", propOrder = {
    "ID",
    "element1",
    "element2",
    "element3",
    "element4",
    "otherID",
    "element5"
})
public class SomeExtension
    implements Serializable, Cloneable, CopyTo
{

    public static final String EXTENSION_CODE = "NAMEOFTHEEXTENSION";
    private final static long serialVersionUID = 1L;
    @XmlElement(required = true)
    protected String iD;
    protected Element1 element1;
    protected Element2 element2;
    protected Element3 element3;
    protected Element4 element4;
    @XmlElement(required = true)
    protected String otherID;
    protected String element5;

我在 Google 上搜索了以下关键字:java 从 xsd 生成静态变量,但没有找到有用的东西。有没有办法我可以做到这一点,或者我首先需要一个 public static String 怪异的东西?

如果我没听错,您想将静态字段添加到您的模式派生 类。

您可以做的最简单的事情就是使用代码注入器插件:

Inserting code with XJC+xsd+jxb using the options " -Xinject-code -extension "

类似于:

<jxb:bindings schemaLocation="schema.xsd">
    <jxb:bindings node="/xs:schema/xs:complexType[@name='SomeExtension']">
        <ci:code>
            public static final String EXTENSION_CODE = "NAMEOFTHEEXTENSION";
        </ci:code>
    </jxb:bindings>
</jxb:bindings>