代码之家  ›  专栏  ›  技术社区  ›  Nic

如何从SQLXML查询中选择标记?

  •  2
  • Nic  · 技术社区  · 16 年前

    如何在mssql中检索XML字段中的字段?

    每当我使用以下XML代码时,我尝试的每个查询都不会按预期工作:

    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <soap:Header>
        <AuthSoapHd xmlns="https://temp.uri.com/Mngmt/">
          <System>System1</System>
        </AuthSoapHd>
      </soap:Header>
      <soap:Body>
        <PrintList xmlns="https://temp.uri.com/Mngmt/">
          <Account>
            <AccNumber xmlns="https://temp.uri.com/Project/Object/Data">990368644</AccNumber>
          </Account>
        </PrintList>
      </soap:Body>
    </soap:Envelope>
    

    我试过以下几种方法都没有成功

    Select [RequestXML].query('/Envelope/Body/PrintList/Account/AccNumber')
      FROM [dbo].[Table1]
    
    1 回复  |  直到 16 年前
        1
  •  4
  •   marc_s MisterSmith    16 年前

    您忽略了正在使用的XML名称空间—您需要注意这一点!

    WITH XMLNAMESPACES('http://schemas.xmlsoap.org/soap/envelope/' AS soap,
                       'https://temp.uri.com/Project/Object/Data' AS data,
                       'https://temp.uri.com/Mngmt/' AS mgmt)
    
    SELECT 
       RequestXML.value('(/soap:Envelope/soap:Body/mgmt:PrintList/mgmt:Account/data:AccNumber)[1]',
                        'BIGINT') AS 'AccNumber'
    FROM 
       [dbo].[Table1]
    

    希望能成功!

    推荐文章