繁体   English   中英

使用jaxb从xml生成java类时缺少类

[英]missing class while generating java class from xml with jaxb

所以这是我的第一个问题。 :)

我尝试从xsd文件生成java类。

所以我的问题如下。 不知何故,jaxb不会为简单类型“Test”生成java类。

我在复杂类型中有两个属性,我对“Art”和“Nummer”感兴趣

            <xs:attribute name="Art" use="required">
              <xs:annotation>
                <xs:documentation>Darf ausschließlich die Werte "BEL" (BEL-Leistung), "NBL"(andere, nicht in der BEL enthaltene Leistung), "EDM" (Edelmetalle oder -legierungen), "MAT" (alle anderen Materialien) oder "RBT" (Rabatt) enthalten. Jede Art kann mehrmals auftreten.</xs:documentation>
              </xs:annotation>
              <xs:simpleType>
                <xs:restriction base="Positionsart"/>
              </xs:simpleType>
            </xs:attribute>
            <xs:attribute name="Nummer" use="optional">
              <xs:annotation>
                <xs:documentation>Ausschließlich anzugeben, wenn Art="BEL". Es sind ausschließlich die offiziellen BEL-Nummern zu verwenden. BEL-Nummern müssen vierstellig übermittelt werden. Das Feld wird nicht übermittelt, wenn Art ungleich BEL ist.</xs:documentation>
              </xs:annotation>
              <xs:simpleType>
                <xs:restriction base="Test"/>
              </xs:simpleType>
            </xs:attribute>

这些类型都在xsd的末尾定义:

  <xs:simpleType name="Positionsart">
  <xs:simpleType name="Test">

这两种类型中有更多,但stackoverflow告诉我,这将是很多代码。 :)

但你可以看一下这里的文件:

https://www.dropbox.com/sh/u0j58gd1jo98qrn/L2Yw_-psOw

这就是课程开头的样子

   @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "")
    public static class Position {

        @XmlAttribute(name = "Art", required = true)
        protected Positionsart art;
        @XmlAttribute(name = "Nummer", required = true)
        protected String nummer;

如您所见,Art是一个Positionsart类型,就像在xsd中指定的那样,但Number不是Test类型,它只是一个String。

我不明白这是什么问题。 两个属性之间的唯一区别是一个是必需的,另一个是optinal,但我试图改变它。

另外我认为命名可能有问题。 SimpleType“Test”在命名为BEL2之前,所以我尝试更改名称。

此外,我发现在开头有一个到命名空间的死链接,首先在这个文档中没有使用命名空间,其次我尝试生成没有这个命名空间的类。

为了生成类,我打开了命令行工具,导航到正确的位置并键入xjc Laborabrechnungsdaten.xsd。 我的Java变量已经到位。

我希望有人有个建议。

提前致谢。 :)

什么是相同的?

PositionsartTest都是XML Schema中的简单类型(参见: https//www.dropbox.com/sh/u0j58gd1jo98qrn/F37X8kxa67/Laborabrechnungsdaten.xsd ),它们扩展了xs:string并定义了有效值的xs:enumeration

有什么不同?

Positionsart而不是Test生成Java枚举的原因是Test类型包含的值不是有效的Java枚举值。

  <xs:enumeration value="0010"/>
  <xs:enumeration value="0018"/>

对于这些无效值中的每一个,您将需要使用外部绑定文件来指定有效的枚举值。 举个例子,看看我在Stack Overflow上提出类似问题的答案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM