はCDATAを得るための私の方法の例です。ここで
DECLARE @GlobalDateFormat varchar(32)
SET @GlobalDateFormat = 'MM/dd/yyyy hh:mm tt'
DECLARE @xml XML
SET @xml =
(
SELECT
SegmentId = ISNULL(SegmentId,0)
, DocumentId = ISNULL(DocumentId,0)
, Title = CAST(Core.dbo.fCharFormat('xmlCDATA',Title,DEFAULT,'') AS xml)
, DocumentShortName = CAST(Core.dbo.fCharFormat('xmlCDATA',DocumentShortName,DEFAULT,'') AS xml)
, [FileName] = CAST(Core.dbo.fCharFormat('xmlCDATA',[FileName],DEFAULT,'') AS xml)
, [Path] = CAST(Core.dbo.fCharFormat('xmlCDATA',[Path],DEFAULT,'') AS xml)
, CreateDate = ISNULL(Core.dbo.fDateFormat(@GlobalDateFormat,CreateDate),Core.dbo.fDateFormat(@GlobalDateFormat,GETDATE()))
, ModificationDate = ISNULL(Core.dbo.fDateFormat(@GlobalDateFormat,ModificationDate),Core.dbo.fDateFormat(@GlobalDateFormat,GETDATE()))
, TemplateId = ISNULL(CAST(TemplateId AS varchar(16)),'')
, IsRoot = ISNULL(IsRoot,0)
, IsActive = ISNULL(IsActive,0)
, SortOrdinal = ISNULL(CAST(SortOrdinal AS varchar(16)),'')
, ClientId = ISNULL(ClientId,'')
, Tag = CAST(Core.dbo.fCharFormat('xmlCDATA',Tag,DEFAULT,'') AS xml)
FROM
Document
WHERE
DocumentId = 9073
FOR XML AUTO, ELEMENTS
)
SELECT @xml
は私のイタチのような、CDATA-から関連の詳細です処理機能:
IF @cmdName = 'xmlCDATA'
BEGIN
IF @chars IS NULL
BEGIN
SET @charsOut = @charsDefault
END
ELSE
BEGIN
SET @chars = REPLACE(@chars,'<![CDATA[','')
SET @chars = REPLACE(@chars,']]>','')
SET @charsOut = '<![CDATA[' + @chars + ']]>'
END
END
奇妙な要求のように見えます。どちらも標準に準拠したXMLパースエル。しかし、顧客は顧客です。 –
残念ながら、SQLはすでに列データ(Texas A&M)を取得してXML(Texas A & M)を直接エスケープしているため、後処理はオプションではありません。 CDATAが許すもの。クライアントはXMLを解析し、値を検索して書き換えたくありません。そして私はすぐにクエリー・リターンを取ってXMLストリングを手作業で構築するのではなく、XMLを返すことが明確な好みであることをすぐに発見しました。 –