Jaxb:如何为 XSD 元素指定默认值 class
Jaxb: How to specify a default class for an XSD element
从 XSD 生成 Java classes 时,如何为某个特定节点指定一个特定且已经存在的 Java class 应该使用而不是尝试生成一个?
非常感谢。
您应该使用以下绑定自定义
<bindings version="2.0" xmlns="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
xmlns:annox="http://annox.dev.java.net" xmlns:namespace="http://jaxb2-commons.dev.java.net/namespace-prefix">
<bindings schemaLocation="../schema/yourSchema.xsd">
<bindings node="//xs:complexType[@name='Foo']">
<class ref="com.FooImpl"/>
</bindings>
</bindings>
</bindings>
您可以使用 episode
文件来引用现有的 类。 .episode
文件只是 jaxb
绑定文件并且在元素和 java 类.
之间具有映射
a) 如果现有的 类 也是从(另一个)xsd 生成的。使用以下选项首先创建 .episode 文件。
xjc -episode a.episode a.xsd
然后使用这个包含映射的 a.episode
作为下一代 xjc
代的输入。
xjc b.xsd -extension -b a.episode
b) 如果你想引用一些随机的 类,那么你可能必须编写自己的剧集文件,提供 element
和 class reference
如下所示。
sample.episode
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" if-exists="true" version="2.1">
<jaxb:bindings scd="x-schema::">
<jaxb:bindings scd="employee">
<jaxb:class ref="www1.example.Employee"/>
<jaxb:package name="www1.example" />
</jaxb:bindings>
</jaxb:bindings>
并使用xjc b.xsd -extension -b sample.episode
从 XSD 生成 Java classes 时,如何为某个特定节点指定一个特定且已经存在的 Java class 应该使用而不是尝试生成一个?
非常感谢。
您应该使用以下绑定自定义
<bindings version="2.0" xmlns="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
xmlns:annox="http://annox.dev.java.net" xmlns:namespace="http://jaxb2-commons.dev.java.net/namespace-prefix">
<bindings schemaLocation="../schema/yourSchema.xsd">
<bindings node="//xs:complexType[@name='Foo']">
<class ref="com.FooImpl"/>
</bindings>
</bindings>
</bindings>
您可以使用 episode
文件来引用现有的 类。 .episode
文件只是 jaxb
绑定文件并且在元素和 java 类.
a) 如果现有的 类 也是从(另一个)xsd 生成的。使用以下选项首先创建 .episode 文件。
xjc -episode a.episode a.xsd
然后使用这个包含映射的 a.episode
作为下一代 xjc
代的输入。
xjc b.xsd -extension -b a.episode
b) 如果你想引用一些随机的 类,那么你可能必须编写自己的剧集文件,提供 element
和 class reference
如下所示。
sample.episode
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" if-exists="true" version="2.1">
<jaxb:bindings scd="x-schema::">
<jaxb:bindings scd="employee">
<jaxb:class ref="www1.example.Employee"/>
<jaxb:package name="www1.example" />
</jaxb:bindings>
</jaxb:bindings>
并使用xjc b.xsd -extension -b sample.episode