gpt4 book ai didi

wsdl - 结合 JAXB 和 JAXWS 以获取导入的 XML 模式

转载 作者:行者123 更新时间:2023-12-04 03:12:39 25 4
gpt4 key购买 nike

如何在使用 wsimport 时为 WSDL 中导入的 XSD 指定 JAXB 绑定(bind)?

我尝试了以下绑定(bind),这会导致错误“XPath evaluation of//xs:element[@name='isFoobar'] results in an empty target node”。

<?xml version="1.0" encoding="UTF-8"?>
<jaxws:bindings xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" wsdlLocation="example.wsdl"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" xmlns:jaxws="http://java.sun.com/xml/ns/jaxws">
<jaxws:bindings node="wsdl:definitions">
<jaxws:bindings node="wsdl:types" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb">
<jaxws:bindings
node="//xs:schema[@targetNamespace='http://www.example.org/']">
<jaxb:globalBindings>
<xjc:serializable uid="10000001" />
</jaxb:globalBindings>
<jaxb:bindings
node="//xs:element[@name='isFoobar']">
<jaxb:typesafeEnumClass name="IsFoobar">
<jaxb:typesafeEnumMember value="01" name="TRUE" />
<jaxb:typesafeEnumMember value="02" name="FALSE" />
</jaxb:typesafeEnumClass>
</jaxb:bindings>
</jaxws:bindings>
</jaxws:bindings>
</jaxws:bindings>
</jaxws:bindings>

有什么想法吗?

最佳答案

很抱歉死线程,我遇到了这个问题,虽然这是在谷歌上出现的第一个答案,其中包含各种关键字组合,但它并没有包含我最终使用的答案。


对于导入的模式,在 WSDL 中对导入的 XSD 指定 JAXB 绑定(bind)的最简单方法是……将其视为完全不同的模式!

简短示例:

MyXSD.xsd

<xsd:schema targetNamespace="whatever"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="ThingThatNeedsToBeBound">
<!-- Whatever this is made of -->
</xs:complexType>
</xsd:schema>

无论这个 xsd 是在哪里导入的(它是在我的 wsdl 的根目录还是在嵌套导入中),我需要写的所有我需要写的来绑定(bind)我的自定义绑定(bind)中的“ThingThatNeedsToBeBound”是:

customBindings.xml

<jaxb:bindings schemaLocation="Path/To/MyXSD.xsd" node="/xs:schema/xs:complexType[@name='ThingThatNeedsToBeBound']">
<!-- your custom binding -->
</jaxb:bindings>

所以,这就像一个常规案例,只是您指定了 schemaLocation,但是您可以将导入的架构本身视为一个整体,而不是某些东西的一部分。

我希望这能帮助其他遇到这个问题的人。


来源:http://www.oracle.com/technetwork/articles/grid/jax-ws-jaxb-customization-082750.html

(注意:在源代码中,解决方案似乎要复杂得多,所以我的案例可能比他们描述的要简单,但我发现我的解决方案仍然使用它!)

关于wsdl - 结合 JAXB 和 JAXWS 以获取导入的 XML 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5484345/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com