xml sql 中的命名空间

NameSpaces in xml sql

如何在查询中声明命名空间?

声明命名空间时出现错误

Declare @Mydoc xml
set @Mydoc = (
         select importe, algo,XD,
               (select impuesto,tasa,transferencia
                from CfdiDet
                for xml raw('cfdi_detalle'),type)
         from cfdienc
         for xml raw('cfdi_encabezado'),type)

这是我遇到问题的部分

set @Mydoc.modify('declare xmlnamespaces ('uri',cfdi')

我想用 ":"

替换 "_"

命名空间前缀不仅仅是您可以使用 .modify() 操作的字符串的一部分...好吧,您 可以 将 XML字符串,执行 REPLACE 并将其转换回 XML。但正确的方法是声明命名空间。

要声明命名空间,您可以使用 WITH XMLNAMESPACES 或使用隐式命名空间声明(在您的情况下不可能)。

试试这个

DECLARE @Mydoc XML;

WITH XMLNAMESPACES('uri' AS cfdi)
SELECT @Mydoc=
(
SELECT 'SomeDummy' AS importe
FOR XML RAW('cfdi:encabezado'),TYPE
);

SELECT @Mydoc 

结果

<cfdi:encabezado xmlns:cfdi="uri" importe="SomeDummy" />