我目前正在使用具有 <xsd:annotation>
的 XML 模式。/<xsd:documentation>
在大多数类型和元素上。当我从这个 XML Schema 生成 Java Bean 时,这些 Bean 的 Javadoc 只包含一些关于类型/元素的允许内容的通用生成信息。
我想看看 <xsd:documentation>
的内容相关位置的标记(例如,complextType 的标记内容应显示在生成的表示该 complexType 的类的 Javadoc 中)。
有什么办法可以做到吗?
编辑:此 XML Schema 将在带有 JAX-WS 的 WSDL 中使用,因此此标记也可能是合适的。
编辑 2:我读过 <jxb:javadoc>
.据我了解,我可以在单独的 JAXB 绑定(bind)文件中或直接在 XML 模式中指定。这几乎可以解决我的问题。但我宁愿使用现有的 <xsd:documentation>
标记,因为 Javadoc 不是文档的主要目标(它主要是关于数据结构的信息,而不是关于从它生成的 Java Beans),并且允许非 JAXB 工具也可以访问这些信息。在 <jxb:javadoc>
中提供文档和 xsd:documentation>
“感觉”不对,因为我无缘无故地复制数据(和工作)。
编辑 3:感谢 Pascal 的回答,我意识到我已经有了一半的解决方案:<xsd:documentation>
的 complexType
s 被写到它的 Javadoc 的开头!问题仍然是只有 complexType
使用 s 和 simpleType
s(也可以产生一个类)并且元素仍然没有 Javadoc。
最佳答案
我一直没能得到正规的xsd:documentation
放置在 java 源代码中,除了 当且仅当 它是一个复杂类型。元素、简单类型的文档,
等被忽略。
所以,我最终使用了 jxb:javadoc
.为此,请包含 xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
的定义在您的<xsd:schema>
元素。
将 child 添加到 <xsd:complexType>
或 <xsd: element>
或 <xsd:attribute>
:
<xsd:annotation><xsd:appinfo><jxb:XXX><jxb:javadoc>
This is my comment for a class/property
</jxb:javadoc></jxb:XXX></xsd:appinfo></xsd:annotation>
其中 XXX 是“类”或“属性”。
对于一个包裹,你写一个 child 到xsd:schema
<xsd:annotation><xsd:appinfo><jxb:schemaBindings><jxb:package name="com.acme"><jxb:javadoc>
This is my comment for a package
</jxb:javadoc></jxb:package></jxb:schemaBindings></xsd:appinfo></xsd:annotation>
编写 HTML 文档需要用 <![CDATA[ --- ]]>
括起来
(编辑:在写我的答案时,问题已被 OP 编辑,所以我正在相应地更新它)
在我的例子中,javadoc 是唯一的目标,所以使用 jxb:javadoc
是可以接受的。 .但是您的更新非常有意义,实际上,我完全同意您的看法。可悲的是,我从来没有为你描述的情况找到一个理想的解决方案(所以我会非常仔细地关注这个问题)。也许你可以使用 xframe 之类的东西从 xsd:documentation
生成文档,但这并不能回答问题。
关于java - 如何使生成的类包含 XML Schema 文档中的 Javadoc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1650249/