Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml XQuery[nodes()]:名称“s”不表示名称空间_Xml_Sql Server 2008_Xquery_Xquery Sql - Fatal编程技术网

Xml XQuery[nodes()]:名称“s”不表示名称空间

Xml XQuery[nodes()]:名称“s”不表示名称空间,xml,sql-server-2008,xquery,xquery-sql,Xml,Sql Server 2008,Xquery,Xquery Sql,我有一个需要分解的xml。但是我得到了一个错误XQuery[nodes]:名称s并不表示名称空间 我有以下格式的xml <s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing"> <s:Header> <a:Action s:mustUnderstand="1">urn:somenam

我有一个需要分解的xml。但是我得到了一个错误XQuery[nodes]:名称s并不表示名称空间

我有以下格式的xml

<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">
   <s:Header>
      <a:Action s:mustUnderstand="1">urn:somename-com:Access.2012.Services.Patient.GetCensus</a:Action>
   </s:Header>
   <s:Body>
      <GetCensusByUnitResponse xmlns="urn:somename-com:Access.2012.Services.Patient">
         <GetCensusByUnitResult xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
            <BeddedPatients>
               <BeddedPatient>
                   ...
                   ...
                   ...
         </GetCensusByUnitResult>
      </GetCensusByUnitResponse>
</s:Body>
</s:Envelope>

;with xmlnamespaces('urn:Epic-com:Access.2012.Services.Patient' as ep,
        'http://www.w3.org/2003/05/soap-envelope' as s,
        'http://www.w3.org/2005/08/addressing' as a,
             'http://www.w3.org/2001/XMLSchema-instance' as i)

谁能告诉我有什么问题吗?提前谢谢

您需要声明名称空间前缀,以便它们在查询执行上下文中可用,而不仅仅在文档中可用。我不熟悉SQLServer的XQuery执行引擎,但它必须有一些用于声明名称空间的功能。你需要找到-或者-你可以考虑使用原生XML数据库,这样你就不需要剪切。

似乎安基尔在他/她的问题正文中添加了正确答案。T-sql要求在select语句之前声明命名空间:

WITH XMLNAMESPACES ( <XML namespace declaration item>  [ { , <XML namespace declaration item> }...] )
它仍在处理MS SQL 2016

WITH XMLNAMESPACES ( <XML namespace declaration item>  [ { , <XML namespace declaration item> }...] )