使用 JAXB 生成 JAVA 类 时出错:XPath 评估结果为空

Error when generating JAVA classes with JAXB: XPath evaluation of results in empty

我有一个 XSD:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.xyz.m" xmlns="http://www.xyz.m" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="N1" minOccurs="0">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="N_A">
            <xs:simpleType>
                <xs:restriction base="xs:byte">
                <xs:minInclusive value="0"/>
                <xs:maxInclusive value="3"/>
                <xs:totalDigits value="2">
                </xs:totalDigits>
            </xs:restriction>
                </xs:simpleType>
            </xs:element>
        <xs:element name="N_B" minOccurs="1" maxOccurs="14">
            <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:enumeration value="5"/>
                <xs:enumeration value="6"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:element>
    </xs:sequence>
    </xs:complexType>
</xs:element>
</xs:schema>    

我创建了一个 .xjb 文件来生成:

<?xml version="1.0" encoding="UTF-8"?>
<jaxb:bindings
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
    version="2.1">
   <jaxb:bindings node="//xs:schema//xs:complexType[@name='N1']">
        <jaxb:class name="N1_XJB" />
    </jaxb:bindings>    
</jaxb:bindings>

我使用了 xjc -b binding.xjb TestXSD.xsd 命令,但我收到了这条错误消息:

[ERROR] XPath evaluation of "//xs:schema//xs:complexType[@name='N1']" results in empty target node line 6 

我尝试了在 Whosebug 上找到的所有方法,但我无法生成。

所以我的问题是,.xjb 文件中缺少什么?

这对我有用:

  1. 您必须从 <xs:element name="N1" minOccurs="0"> 中删除 minOccurs。因为此属性会生成以下错误:

[ERROR] s4s-att-not-allowed: Attribute 'minOccurs' cannot appear in element 'element'.

  1. .xjb 文件中,您必须更改以下行:

<jaxb:bindings node="//xs:schema//xs:complexType[@name='N1']">

至:

<jaxb:bindings schemaLocation="TestXSD.xsd" node="//xs:schema//xs:element[@name='N1']">