我在SQL Server 2014中使用FOR XML PATH生成XML文件以发送给我们的供应商。他们的系统要求每个根节点由回车符/换行符分隔。这是我用来生成它的T-SQL代码:
let annotation2 = MKPointAnnotation()
annotation2.coordinate = CLLocationCoordinate2DMake(0,0)
annotation2.title = "title2"
annotation2.subtitle = "Do2 any additional setup after loading the view, typically from a nib. "
self.mapView.addAnnotation(annotation2)
这很好用,但返回一个长字符串,节点之间根本没有分隔。 (我会发一个例子,但这里看起来就像混乱的混乱。)
无论如何,我们需要的是生成一个文件,其中每个Declare @xmldata xml
set @xmldata =
(SELECT a.StatementDate AS [stmt_date]
,a.CustomerID AS [student_id]
,'Upon Receipt' AS [due_date]
,a.TotalDue AS [curr_bal]
,a.TotalDue AS [total_due]
,a.AlternateID AS [alternate_id]
,a.FullName AS [student_name]
,a.Email AS [student_email]
,a.Addr1
,a.Addr2
,a.Msg AS [message]
,(
SELECT b.StatementDate AS [activity_date]
,b.ActivityDesc AS [activity_desc]
,b.TermBalance AS [charge]
FROM #ActivityXML AS b
WHERE a.CustomerID = b.CustomerID
ORDER BY a.StatementDate
FOR XML PATH('activity'),TYPE
)
FROM #BillingStatement AS a
FOR XML PATH('Billing'))
select @xmldata as returnXml
标记和内容在结束<Billing>
标记之后放在新行上。我猜有一个简单的解决方案,比如在代码中的某处插入</Billing>
,但我一直无法解决这个问题。是否有可能或者我需要在另一个系统中进行此操作?
答案 0 :(得分:0)
您可以在将xml转换为varchar
后尝试进行替换select REPLACE(CONVERT(VARCHAR(MAX), @xmldata), '><', ( '>' + CHAR(13) + char(10)) + '<' ) as returnXml
答案 1 :(得分:0)
根据此处的回复和其他地方的研究,仅使用T-SQL是不可能的。我们需要复制/粘贴输出,或者使用其他程序来获取数据并插入换行符。
来自@Shnugo - &#34;在T-SQL中本身不支持XML的漂亮版本。您可以使用CLR方法,服务或任何类型的后处理与物理存储的文件。您可以从网格结果中打开XML&#39; xml viewer并将输出复制粘贴到文本编辑器。如果您的XML很大,请不要忘记将网格结果的XML大小设置为无限制。&#34;