Db2 for i XMLTABLE存在名称空间问题

Db2 for i XMLTABLE存在名称空间问题,xml,soap,db2-400,Xml,Soap,Db2 400,我试图调用一个返回xml的Web服务,然后将结果输出到一个表中 请注意,下面的示例只是对我正在调用的更简单的Web服务的调用,但是如果我能让这个工作,我相信我能让更复杂的工作 SELECT WebServiceResult.* FROM XMLTABLE(XMLNAMESPACES('http://www.w3.org/2003/05/soap-envelope' as "soap", 'http://blah.com' as "bb"),

我试图调用一个返回xml的Web服务,然后将结果输出到一个表中

请注意,下面的示例只是对我正在调用的更简单的Web服务的调用,但是如果我能让这个工作,我相信我能让更复杂的工作

SELECT WebServiceResult.*

FROM XMLTABLE(XMLNAMESPACES('http://www.w3.org/2003/05/soap-envelope' as "soap",  'http://blah.com' as "bb"),
         '$doc/soap:Envelope'
      PASSING
      XMLPARSE(DOCUMENT systools.HTTPPOSTCLOB('http://zz01:10000/admin.asmx',
                              CAST ('<httpHeader>
                                       <header name ="content-type" value ="application/soap+xml"/>
                                     </httpHeader>' AS char(1024)),
                              CAST('<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" 
                                     xmlns:bb="http://blah.com">
                                    <soap:Header/>
                                    <soap:Body>
                                    <bb:Login>
                                       <bb:applicationNameSpace>something</bb:applicationNameSpace>
                                       <bb:loginId>loginId</bb:loginId>
                                       <bb:password>password</bb:password>
                                   </bb:Login>
                                   </soap:Body>
                                   </soap:Envelope>' AS char(1024)))) AS "doc"
 COLUMNS
 LoginResult varchar(256) PATH '/soap:Body/LoginResponse/LoginResult'
) AS WebServiceResult;  
然后我得到了上面粘贴的xml,所以我想这只是我的路径出了问题,但我尝试了很多不同的方法,但都无法让它工作


非常感谢您的帮助。

基于您的两个名称空间声明:

XMLTABLE(XMLNAMESPACES('http://www.w3.org/2003/05/soap-envelope' as "soap",  'http://blah.com' as "bb")
和XML

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <soap:Body>
    <LoginResponse xmlns="http://blah.com">
      <LoginResult>something.cdd3a6cc-8104-37bd-7514-035b50f5b5c6</LoginResult>
    </LoginResponse>
  </soap:Body>
</soap:Envelope>
或者使用通配符命名空间

/soap:Envelope/soap:Body/*:LoginResponse/*:LoginResult

你是冠军。非常感谢你!在返回的xml上,它与bb没有任何关系,所以我不太明白为什么会这样,但是谢谢@Anson,这是因为默认名称空间
xmlns=”http://blah.com
需要一个前缀。@Anson,并且
元素被绑定到该默认名称空间,即使它不显式可见。
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <soap:Body>
    <LoginResponse xmlns="http://blah.com">
      <LoginResult>something.cdd3a6cc-8104-37bd-7514-035b50f5b5c6</LoginResult>
    </LoginResponse>
  </soap:Body>
</soap:Envelope>
/soap:Envelope/soap:Body/bb:LoginResponse/bb:LoginResult
/soap:Envelope/soap:Body/*:LoginResponse/*:LoginResult