XQuery转换映射错误:{err} FORG0005:预计只有一个项目,得到0个项目

时间:2014-02-06 17:31:51

标签: soap mapping xquery transformation osb

我在执行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,所以我知道这不是问题......

1 个答案:

答案 0 :(得分:3)

看起来GetConsumosResponseGetConsumosResult位于默认名称空间http://tempuri.org/Servicios/CGI中。但是,看起来您的路径表达式不使用此命名空间。您可以尝试添加新的命名空间定义"cgi"="http://tempuri.org/Servicios/CGI",然后将路径更改为:

$getConsumosResponse/cgi:GetConsumosResponse/cgi:GetConsumosResult/diffgr:diffgram/NewDataSet