将额外信息添加到SQL Server中的查询输出

时间:2018-04-02 14:44:58

标签: sql-server xml

我在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>

1 个答案:

答案 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');
  • 改变3:不知道你需要什么。您的示例显示结束</newLine>,但这无助于了解您的问题。无论如何,没有开头标签这是错误的......