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" />
如何在查询中声明命名空间?
声明命名空间时出现错误
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" />