当前位置: 首页 > 知识库问答 >
问题:

向JAXB生成的package-info添加注释

宣冥夜
2023-03-14

我一直在使用 annox 在我的 jaxb 生成的类上添加注释(通过绑定文件),但我找不到直接在包上添加注释的方法(包信息.java)。

我一直在尝试在bindings.xml中这样做:

<jaxb:schemaBindings>
    <jaxb:package name="my.package">
        <annox:annotate>
            <annox:annotate annox:class="my.Annotation" />
        </annox:annotate>
    </jaxb:package>
</jaxb:schemaBindings>

但是jaxb抱怨说< code>annox:annotate不应该在那里。

还有别的方法吗?

共有1个答案

戚甫
2023-03-14

作者在这里。

目前不支持,但可以轻松实现。请在此处提交问题:https://github.com/highsource/annox/issues

完成此操作的方式是使用 @target=“package”。因此,您必须在此包中自定义某些内容(类,无论什么),并将目标属性设置为。然后,注释将转到包信息.java

更新

这在JAXB2 Annotate插件1.0.0中实现。

https://github.com/highsource/jaxb2-annotate-plugin/issues/1

例:

<jaxb:bindings
    xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:annox="http://annox.dev.java.net"
    jaxb:extensionBindingPrefixes="annox"

    jaxb:version="2.1">

    <jaxb:bindings schemaLocation="schema.xsd" node="/xsd:schema">
        <jaxb:bindings node="xsd:complexType[@name='issueJIIB43Type']">
            <annox:annotate target="class">@javax.xml.bind.annotation.XmlRootElement("someElement")</annox:annotate>
            <annox:annotate target="package">@javax.xml.bind.annotation.XmlSchema(elementFormDefault=javax.xml.bind.annotation.XmlNsForm.QUALIFIED)</annox:annotate>
            <annox:annotatePackage>@javax.annotation.Generated({"XJC"})</annox:annotatePackage>
        </jaxb:bindings>
    </jaxb:bindings>
</jaxb:bindings>
 类似资料:
  • 问题内容: 嗨,stackoverflow世界, 我想在XSD中指定JAXB可以将特定元素用作XmlRootElement。 我知道如何将注释添加到生成的类中:我想做的是指定可以在代码生成之前将元素生成为根元素。 我使用外部JAXB定制(.xjb文件)。目的是不修改架构(因为它们正在定义标准)。 有人知道怎么做吗?谢谢! 新泽西 问题答案: 问题解决了。 JAXB插件Annotate http:/

  • 手工编写类和从scheme生成JAXB类的优缺点是什么。我开始新的项目,并希望了解如何选择避免陷阱。 我有复杂的XML结构(基本上是FreeSwitch配置定义),包括不同XML级别上的可重复类型。

  • JAXB为每个属性生成@XmlAttribute注释。例如,属性 转换为带注释的java对象属性 但是,如果属性在名称中没有下划线,则@Xml属性中的名称字段丢失(因此##默认)。我想自定义JAXB绑定,以便也生成没有下划线的名称的注释。有什么建议吗? 谢谢!Johannes

  • 如果没有package-info.java文件,JAXB解组器会抛出异常。此代码是从另一种语言调用的,自定义类加载器无法正确加载包信息。 我已经手动将命名空间参数添加到所有@XmlElement注释中。 Xml 根元素具有多个 xmlns 属性。其中两个(xmlns和xmlns:c)具有相同的值(我无法更改xml,它来自外部服务) 但是:如果我从文档中删除xmlns="urn:foo:bar ",