我一直在使用 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不应该在那里。
还有别的方法吗?
作者在这里。
目前不支持,但可以轻松实现。请在此处提交问题: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 ",