gpt4 book ai didi

java - CXF 客户端 SOAP 消息格式化

转载 作者:搜寻专家 更新时间:2023-10-30 21:34:57 26 4
gpt4 key购买 nike

我用来创建 CXF 客户端的 WSDL 文件具有以下元素定义:

<xsd:element name="Rate"> 
<xsd:simpleType>
<xsd:restriction base="xsd:decimal">
<xsd:totalDigits value="18" />
<xsd:fractionDigits value="2" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>

但是,当我尝试发送 SOAP 消息时,小数点后的位数超过了最大值。例如,我得到 2.48862 而期望是 2.48。为了解决这个问题,我计划实现一个 XmlAdapter 来编码值,但是我无法将 WSDL 中的元素映射到客户端,因为 XmlAdapter 的 onyl 类作为注释传递给字段 decleration。

@XmlJavaTypeAdapter(CustomXmlAdapter.class)

似乎没有办法通知 XmlAdapter 该字段必须在小数点后有 2 位数字。

小数位数因元素而异。我也无权更改 WSDL。

有没有办法在观察 WSDL 中指定的小数点数的同时格式化这些元素?

最佳答案

我可能会建议在 WSDL 引用的模式上使用 xQuery。模式的名称和位置是 WSDL 的一部分,也可以通过 XQuery 检索。

模式是格式良好的 XML,因此您只需确定正确的 XPath 选择器即可检索所需的值 - 在这种情况下,至少类似于...

//xsd:element[@name == 'Rate']//xsd:fractionDigits/@value

应该产生值 2。

请记住,最新的 JDK 中内置了一个 XPath/XQuery 解释器。您只需在其上放置某种前端,我相信它会很好地处理流。

执行上述操作可让您在处理给定元素时动态查询架构,例如,允许您在处理 Rate 时获得正确的小数位数。

关于java - CXF 客户端 SOAP 消息格式化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20709505/

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