在xsd上运行xjc,但是没有生成类

时间:2013-06-26 11:01:46

标签: java web-services jaxb xsd

我有一个xsd,其中包含以下条目:

 <xsd:simpleType name="Percentage">
    <xsd:restriction base="xsd:decimal">
        <xsd:minInclusive value="0"/>
        <xsd:maxInclusive value="1"/>
    </xsd:restriction>
</xsd:simpleType>

但是当我在这个xsd上运行xjc时,我没有创建类Percentage。我怎么能这样做以及它将如何运作。我正在使用CXF用Java编写代码第一个Web服务。 此致

1 个答案:

答案 0 :(得分:0)

您必须创建一个绑定文件来强制生成simpleType: http://docs.oracle.com/cd/E17802_01/webservices/webservices/docs/1.5/tutorial/doc/JAXBUsing4.html 您应该尝试javaType声明。

我之前只做过枚举,所以我可以给你一个例子:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<jaxb:bindings xmlns:jaxb="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:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:annox="http://annox.dev.java.net"
    xsi:schemaLocation="http://java.sun.com/xml/ns/jaxb http://java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd"
    version="2.1">
    <jaxb:bindings schemaLocation="schema.xsd" node="/xs:schema">
        <jaxb:bindings node="//xs:complexType[@name='sometype']//xs:element[@name='Percentage']/xs:simpleType">
            <jaxb:typesafeEnumClass name="Percentage"></jaxb:typesafeEnumClass>
        </jaxb:bindings>
    </jaxb:bindings>
</jaxb:bindings>

如果你正在使用maven,你应该将这些行添加到jaxb插件的配置中:

<bindingDirectory>src/main/schema</bindingDirectory>
<bindingIncludes>
   <include>**/*.xjb</include>
</bindingIncludes>