0

我在进行 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在我的命名空间中定义了,所以我知道这不是问题......

4

1 回答 1

3

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

$getConsumosResponse/cgi:GetConsumosResponse/cgi:GetConsumosResult/diffgr:diffgram/NewDataSet
于 2014-02-06T22:48:11.973 回答