我在SQL Server中有这个生成XML的查询,我想补充一些细节。
这就是我所拥有的:
<FE>
<id>1</id>
<pass>0</pass>
<CONSECUTIVE>0</CONSECUTIVE>
<DetailLine>
<Article>Book<Article/>
<Currency>USD</Currency>
<Price>10</Price>
<Total>10</Total>
</DetailLine>
....
</FE>
我想生成此输出
<?xml version="1.0" encoding="utf-8"?> <- CHANGE 1
<FE xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="https://tribunet.hacienda.go.cr/docs/esquemas/2017/v4.2/facturaElectronica"> <- CHANGE 2
<id>1</id>
<pass>0</pass>
<CONSECUTIVE>0</CONSECUTIVE>
<DetailLine>
<Article>Book<Article/>
<Currency>USD</Currency>
<Price>10</Price>
<Total>10</Total>
</DetailLine>
</EndLine> <--add this CHANGE 3
....
</FE>
答案 0 :(得分:0)
你的问题并不是很清楚......特别是改变3 实际上是错误的......
但是一个接一个地说:
更改1:XML级别不支持此功能!
任何XML声明<?xml blah ?>
都将被省略,因为在任何情况下,SQL-Server中的XML都是UTF-16
(确切地说:UCS-2
)
真正的UTF-8
根本不受SQL-Server的支持!很多人认为,VARCHAR
类型是UTF-8
,但这是错误的。它是扩展ASCII
你可以连接字符串。因此,您可以将XML转换为字符串并附加您喜欢的任何其他字符串,但这可能 - 不再是格式良好的XML ...
更改2:这很简单,请阅读WITH XMLNAMESPACES
试试这个
WITH XMLNAMESPACES(DEFAULT 'https://tribunet.hacienda.go.cr/docs/esquemas/2017/v4.2/facturaElectronica'
,'http://www.w3.org/2001/XMLSchema' AS xsd
,'http://www.w3.org/2001/XMLSchema-instance' AS xsi)
SELECT 1 AS [id]
,0 AS [pass]
,0 AS [CONSECUTIVE]
FOR XML PATH('FE');
</newLine>
,但这无助于了解您的问题。无论如何,没有开头标签这是错误的......