xml-sql中的名称空间
如何在查询中声明名称空间 我在声明名称空间时出错xml-sql中的名称空间,sql,xml,sql-server-2008,xml-namespaces,Sql,Xml,Sql Server 2008,Xml Namespaces,如何在查询中声明名称空间 我在声明名称空间时出错 Declare @Mydoc xml set @Mydoc = ( select importe, algo,XD, (select impuesto,tasa,transferencia from CfdiDet for xml raw('cfdi_detalle'),type) from cfdienc
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')
我想用
“:”
替换“\uquot
”:“名称空间前缀不仅仅是字符串的一部分,您可以使用.modify()
。。。好的,您可以将XML转换为字符串,执行替换并将其转换回XML。但是正确的方法是声明名称空间
要声明名称空间,可以将与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" />
您知道我是如何对文件进行编码的吗?它只在version=“1.0”中生成,现在…你是我的英雄!!:D@carlitus212XML声明
实际上并没有绑定到XML。这是告诉消费者有关内容及其编码的详细信息。如果真正的编码是UCS-2
,那么将类似于utf-8
的东西写入报头是毫无意义的。这个宣言不仅仅是一种神奇的魔法。。。当您将XML写入文件时,应该设置正确的编码并在标题中说明。本机不支持此操作。非常感谢,你帮了我很多忙:D@carlitus212只需使用类似于REPLACE(CAST(您的xml为NVARCHAR(MAX))、'cfdi_'、'cfdi:')的内容即可
。并使用另一个REPLACE()
或STUFF()
将名称空间声明手动设置到根节点中。