我有一個返回XML的存儲過程。 這是一個調查應用程序。TSQL - 非法xml字符
它遍歷調查的所有問題和選擇並返回XML。
但是,每當我嘗試將問題文本包含在XML中時,我都會收到非法的xml字符錯誤。
我正在看所有的問題,並沒有特殊字符,實際上唯一不是字母字符是問題結束的時期。
有什麼我做錯了嗎?
這裏是我的查詢:
SET @root = (SELECT
CONVERT
(xml,
(
SELECT q.QuestionId '@questionId'
,q.DisplayOrder '@orderId'
,q.IsRequired '@required'
,q.Weight '@weight'
,CONVERT(xml,
(
SELECT
qc.QuestionId '@questionId'
,qc.DisplayOrder '@orderId'
,(SELECT REPLACE((SELECT REPLACE((SELECT REPLACE((SELECT REPLACE((SELECT REPLACE(qc.[Description] ,'&','&')),'''',''')),'"','"')),'<','<')),'>','>'))
FROM survey.Question qc
WHERE qc.QuestionId = q.QuestionId
FOR XML PATH ('question')
)
)
,CONVERT(xml,
(
SELECT
qc.QuestionChoiceId '@choiceId'
,qc.DisplayOrder '@orderId'
,qc.Weight '@weight'
,ISNULL(qc.Description,'') '@description'
FROM survey.QuestionChoice qc
WHERE qc.QuestionId = q.QuestionId
FOR XML PATH ('choice'), type, root('choices')
)
)
FROM survey.Question q
WHERE q.SectionId = @SectionId
FOR XML PATH('questionset')
)
))
如果我代替我的「消毒」的SELECT語句,並用硬編碼的文本替換,我的查詢工作正常。
以下是來自數據庫的一些示例問題。
任何額外的評論或建議的讚賞:
的分類器 是禮貌和專業。
評分員提供了很好的理由 他們的評估。
我們真的做一些觸發問題的示例數據,並且不需要執行任何手動實體替換 –
爲什麼我不應該執行實體替換?是否自動處理?請參閱已更新的示例數據問題 – Mark
是的,工具需要關心XML ES遮蓋要求 - 例如運行'選擇'A&B'作爲xml路徑的[@fido],root('def')'並檢查輸出。通過示例數據,我希望創建一些完整的腳本來創建一些表結構(表變量通常可以工作)並插入。優選地,在減少的一組列上(然後用減少的查詢)這足以證明相同的錯誤 - 例如, a [mcve] –