java - 如何使生成的类包含 XML Schema 文档中的 Javadoc

标签 java jaxb jax-ws javadoc xjc

我目前正在使用具有 <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/

相关文章:

java - 在 Java ( Jaxb ) 中从 xsd 生成类

java - 如何防止Web Service故障被记录在sys.out中?

java - 'a == null' 和 'null == a' 之间的区别

java - Maven 2 构建 Java Web 服务?帮助

java - 我想在 SOAP 体元素中传递我的自定义对象,该怎么做?

c# - .NET JAXB 等效项?

java - 从 Java 使用 SharePoint Web 服务时 NTLM 失败?

java - 在 JAX-WS 中定义绑定(bind)名称

java - 如何使我的类(class)能够转换整数

java - 需要在 5 秒内使用 hibernate 在 mysql 中插入 100000 行