代码之家  ›  专栏  ›  技术社区  ›  yogsma

从XSD模式生成Java类

  •  2
  • yogsma  · 技术社区  · 7 年前

    我试图从XSD模式生成java类 http://docs.oasis-open.org/ws-sx/ws-trust/200512/ws-trust-1.3.xsd .

    为此,我使用 jaxb2-maven-plugin 具有 xjc 来制造那些眼镜。但遇到以下错误

    http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd [87,40]
    org.xml.sax.SAXParseException; systemId: http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd; lineNumber: 87; columnNumber: 40; A class/interface with the same name "com.abccompany.wstrust.ReferenceType" is already in use. Use a class customization to resolve this conflict.
    
    [ERROR] http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd [97,35]
    org.xml.sax.SAXParseException; systemId: http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd; lineNumber: 97; columnNumber: 35; (Relevant to above error) another "ReferenceType" is generated from here.
    
    [ERROR] http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd [87,40]
    com.sun.istack.SAXParseException2; systemId: http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd; lineNumber: 87; columnNumber: 40; Two declarations cause a collision in the ObjectFactory class.
    
    [ERROR] http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd [97,35]
    com.sun.istack.SAXParseException2; systemId: http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd; lineNumber: 97; columnNumber: 35; (Related to above error) This is the other declaration.
    [ERROR] http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd [152,58]
    com.sun.istack.SAXParseException2; systemId: http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd; lineNumber: 152; columnNumber: 58; Two declarations cause a collision in the ObjectFactory class
    [ERROR] http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd [96,52]
    com.sun.istack.SAXParseException2; systemId: http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd; lineNumber: 96; columnNumber: 52; (Related to above error) This is the other declaration.
    

    所以我尝试使用绑定来解决冲突

    <jxb:bindings version="1.0" xmlns:jxb="http://java.sun.com/xml/ns/jaxb" xmlns:xsd="http://www.w3.org/2001/XMLSchema" schemaLocation="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" >
        <jxb:bindings node="//xsd:complexType[@name='ReferenceType']">
            <jxb:class name="AbstractReferenceType1" />
        </jxb:bindings>
    </jxb:bindings>
    

    但我仍然有以下错误

    [ERROR] http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd [152,58]
    com.sun.istack.SAXParseException2; systemId: http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd; lineNumber: 152; columnNumber: 58; Two declarations cause a collision in the ObjectFactory class
    [ERROR] http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd [96,52]
    com.sun.istack.SAXParseException2; systemId: http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd; lineNumber: 96; columnNumber: 52; (Related to above error) This is the other declaration.
    

    尝试为添加绑定 xmldsig-core-schema.xsd 架构,但它不起作用。如何准确地找出错误中提到的行号和列号?如果我只是在记事本中复制模式,那么行号将指向不相关的xml标记。

    有人试图生成这些类吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   yogsma    7 年前

    按照KarlNicholas的建议,我跑了 xjc 没有任何其他选项,它为我生成了类。每次我都通过 -p 作为一种选择,它会抛出一个我发布的有问题的错误。