我在执行XQuery映射时遇到了麻烦。错误如下:
分析XML时出错:{err} FORG0005:预计只有一个项目,有0项。
这是我收到的回复文件:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header xmlns:cgi="http://tempuri.org/Servicios/CGI"/>
<soap:Body xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<GetConsumosResponse xmlns="http://tempuri.org/Servicios/CGI">
<GetConsumosResult>
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
<NewDataSet xmlns="">
<Consumos diffgr:id="Consumos1" msdata:rowOrder="0">
...
</Consumos>
...
</NewDataSet>
</diffgr:diffgram>
</GetConsumosResult>
</GetConsumosResponse>
</soap:Body>
</soapenv:Envelope>
在我的OSB控制台中,我有以下绑定...
Replace [ entire node ] of [ . ]
in [ getConsumosResponse ] with [ XQuery Resource... ]
XQuery资源:OSBSettlementProxy/XQuery/NGCombustibleXQResponse
变量名称和绑定:
newDataSet1: $getConsumosResponse/GetConsumosResponse/GetConsumosResult/diffgr:diffgram/NewDataSet
我已经在我的命名空间中定义了diffgr
,所以我知道这不是问题......
答案 0 :(得分:3)
看起来GetConsumosResponse
和GetConsumosResult
位于默认名称空间http://tempuri.org/Servicios/CGI
中。但是,看起来您的路径表达式不使用此命名空间。您可以尝试添加新的命名空间定义"cgi"="http://tempuri.org/Servicios/CGI"
,然后将路径更改为:
$getConsumosResponse/cgi:GetConsumosResponse/cgi:GetConsumosResult/diffgr:diffgram/NewDataSet