2012-04-20 20 views
1

私はSQL Server 2008を使用しています。私の目的は、テーブルからxml形式にデータをエクスポートして、当社のウェブサイトで使用できるCAP XMLファイルを作成することです。現在、正しい形式でデータを取得するためのselect文を書いています。コードは次のとおりです:xmlファイルを生成するためにsqlの特殊文字をエスケープする

select (SELECT TOP 5 [Master_Incident_Number] AS incidents 
,[Jurisdiction] AS jurisdiction 
,[Response_Date] AS Date 
FROM [ESCAD_DW_System].[dbo].[CurrentIncidents_V] Incident 
FOR XML PATH ('area'), type) AS Alert for xml path (''), 
ROOT ('?xml version = "1.0" encoding = "UTF-8"?') 

ただし、「無効なXML識別子」エラーが表示されます。シンボル。誰も助けることができますか?

答えて

0

ROOTを使用してxmlエンコードタグを追加することはできません。これを行う唯一の方法は、xml出力をvarchar(max)に変換し、エンコードタグの前に付加することです。ただし、デフォルトではFOR XMLの出力はUTF-16であるため、UTF-8エンコーディングはおそらく必要ありません。

create function gimmexml() 
returns varchar(max) 
as 
begin 
    return (
     select a='some', b='xml' 
     for xml path ('')   
    ) 
end 
go 

select '<?xml version="1.0" encoding="UTF-8"?>'+dbo.gimmexml(); 

結果:

<?xml version="1.0" encoding="UTF-8"?><a>some</a><b>xml</b> 

さらに読書: http://www.devnewsgroups.net/group/microsoft.public.sqlserver.xml/topic60022.aspx http://msdn.microsoft、ここvarchar(max)にXMLを変換するために、UDFを使用して簡単な例であると述べました。 com/ja-us/library/ms345137%28v = sql.90%29.aspx

関連する問題