首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在sql server中查询具有不同命名空间的xml节点

如何在sql server中查询具有不同命名空间的xml节点
EN

Stack Overflow用户
提问于 2014-03-13 21:45:50
回答 1查看 1.1K关注 0票数 0
代码语言:javascript
复制
 <?xml version="1.0" encoding="UTF-8"?>
<cfdi:Comprobante 
    xmlns:cfdi="http://www.sat.gob.mx/cfd/3" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.sat.gob.mx/cfd/3 http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv32.xsd" version="3.2" folio="29027" fecha="2014-03-06T18:09:27" tipoDeComprobante="ingreso" formaDePago="Pago en una sola exhibición" metodoDePago="EFECTIVO" noCertificado="00001000000201571214" subTotal="346.42" TipoCambio="1.0" Moneda="MXP" total="400" LugarExpedicion="AGUASCALIENTES,AGUASCALIENTES"  sello="a/koIf5I9dA4gdHBLmsPkmQ1Pg/u8Ftx/EXlY8KTAKYOFedpyLlfubXXYr8YNYuMpMjMTWksyWfqamFO5gNJtfR7pVtJ9RB4R+JnqPSb4lOdWz4+vZdwPueFhhsnicyXpessBeSBuyStRUa+tapxeW3CE0cQUEOu+zfEdkxLo+4=">
    <cfdi:Complemento>
        <tfd:TimbreFiscalDigital xmlns:tfd="http://www.sat.gob.mx/TimbreFiscalDigital" xsi:schemaLocation="http://www.sat.gob.mx/TimbreFiscalDigital http://www.sat.gob.mx/TimbreFiscalDigital/TimbreFiscalDigital.xsd" selloCFD="a/koIf5I9dA4gdHBLmsPkmQ1Pg/u8Ftx/EXlY8KTAKYOFedpyLlfubXXYr8YNYuMpMjMTWksyWfqamFO5gNJtfR7pVtJ9RB4R+JnqPSb4lOdWz4+vZdwPueFhhsnicyXpessBeSBuyStRUa+tapxeW3CE0cQUEOu+zfEdkxLo+4=" FechaTimbrado="2014-03-06T18:09:43" UUID="7C35D216-5B48-401A-9470-35DD6941EA08" noCertificadoSAT="00001000000202864530" version="1.0" selloSAT="ptTsZg67YnS9iQfnpUKH6HtBWIdt5uOwsnYvU4cMau8H99kb6I8zVE9IyPKGyxhEkIwOa5p8mjVzNZ7cclB3VO+m1r2LBt8s2j9NdTDlkQAT5TPoD8UveGkj8MlR5NVOCBQwCz29q6d+YqaY4S/f2IxokVLYy7iz1scDNma8VPc=" />
    </cfdi:Complemento>
</cfdi:Comprobante>

我在这个xml中有一个XML变量,我需要从节点TimbreFiscal获取值,我尝试了下面的查询,但是它不起作用,

代码语言:javascript
复制
WITH XMLNAMESPACES    (  'http://www.sat.gob.mx/TimbreFiscalDigital' as Timbre) 
select   TimbreSelloSAT = Timbre.value('@selloSAT', 'varchar(100)'),
    TimbreNoCertificadoSAT = Timbre.value('@noCertificadoSAT', 'varchar(100)'),
    TimbreSelloCFD = Timbre.value('@selloCFD', 'varchar(100)'),
    TimbreFecha = Timbre.value('@FechaTimbrado', 'varchar(100)'),
    TimbreUUID = Timbre.value('@UUID', 'varchar(100)'),
    TimbreVersion = Timbre.value('@version', 'varchar(100)')  
FROM @xml.nodes('/Comprobante/Complemento/TimbreFiscalDigital') as a(Timbre) 

任何帮助都是可以接受的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-13 23:20:41

这应该是可行的:

代码语言:javascript
复制
    ;WITH XMLNAMESPACES    (  'http://www.sat.gob.mx/TimbreFiscalDigital' as Timbre, 'http://www.sat.gob.mx/cfd/3' as cfdi) 
select   TimbreSelloSAT = Timbre.value('@selloSAT', 'varchar(100)'),
    TimbreNoCertificadoSAT = Timbre.value('@noCertificadoSAT', 'varchar(100)'),
    TimbreSelloCFD = Timbre.value('@selloCFD', 'varchar(100)'),
    TimbreFecha = Timbre.value('@FechaTimbrado', 'varchar(100)'),
    TimbreUUID = Timbre.value('@UUID', 'varchar(100)'),
    TimbreVersion = Timbre.value('@version', 'varchar(100)')  
FROM @xml.nodes('/cfdi:Comprobante/cfdi:Complemento/Timbre:TimbreFiscalDigital') a(timbre)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22391641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档