【问题标题】:How to resolve already defined elements in WSDL?如何解析 WSDL 中已定义的元素?
【发布时间】:2014-11-16 16:32:03
【问题描述】:

我正在尝试连接到 C#/NET (*.svc) 网络服务。我必须使用java,因此wsdl2java是我的选择。

问题:目标网络服务以某种方式定义了许多重复的元素。这可能是由于 C# 的性质或其他原因。

大约有 100 多个元素,如下所示:

<xs:complexType name="Ticket">
    <xs:sequence>
        <xs:element minOccurs="0" name="ASegment"
            nillable="true" type="tns:AnArray" />
    </xs:sequence>
</xs:complexType>
<xs:element name="Ticket" nillable="true" type="tns:Ticket" />

导致:

'Ticket' is already defined (org.apache.cxf:cxf-codegen-plugin:3.0.1:wsdl2java:generate-sources:generate-sources)

我该如何应对?我读到了一个 jaxb-binding.xml 文件,我可以在其中显式地“重命名”特定元素。

但如果我将它应用于 100 多个元素,那么一周只有 5 天...

有什么办法可以自动生成类吗?

【问题讨论】:

    标签: java c# web-services jaxb wsdl


    【解决方案1】:

    请看这个答案:

    Prefixing JAXB generated classes

    jaxb:nameXmlTransform 是你的朋友。

    我通常是&lt;jaxb:elementName suffix="Element"/&gt;

    【讨论】:

    • 有趣。是否也可以在每个xs:complexType 元素上附加suffix="Type"??
    • 因为,如果每个元素都按照您的描述附加后缀,那对我没有任何帮助,因为同名的 xs:complexTypexs:element 在相同的 wsdl/xsd 文件。
    • 我不确定是什么问题。如果您使用后缀定义elementName,则元素将带有后缀并且类型 - 不是。应该是没有冲突的。无论如何,还有typeName,请阅读我发布的链接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-13
    • 2018-10-27
    • 2010-10-23
    • 1970-01-01
    • 2011-01-30
    相关资源
    最近更新 更多