有誰知道爲什麼這個XML文本在SQL Server 2008中拋出非法名稱字符錯誤?XML解析:第1行,第23個字符,非法名稱字符
'<cs><c a="2" b="CITY & STATE TX" c="CITY & STATE TX"/></cs>'
異常消息是
Msg 9421, Level 16, State 1, Line 2
XML parsing: line 1, character 23, illegal name character
以下是用於解析該XML
DECLARE @CaptionsDescriptions XML = '<cs><c a="2" b="CITY & STATE TX" c="CITY & STATE TX"/></cs>'
DECLARE @DocHandle int
DECLARE @CaptionsDescriptionsTable TABLE
(
ID INT IDENTITY(1,1),
languageID INT,
Caption VARCHAR(50),
Description VARCHAR(2000)
)
EXEC sp_xml_preparedocument @DocHandle OUTPUT,@CaptionsDescriptions
INSERT INTO @CaptionsDescriptionsTable SELECT a,b,c
FROM OPENXML(@DocHandle,'cs/c')
WITH (
a int, -- language id
b varchar(50), -- caption
c varchar(2000) -- description
)
-- remove document handler
EXEC sp_xml_removedocument @DocHandle
由於該查詢。
這個錯誤告訴你到底哪裏無效字符。另外,爲什麼用C#標記? – leppie
很好的例子來說明爲什麼人們不應該手動形成XML。 – I4V
如果您嘗試將該字符串轉換爲SqlString,該怎麼辦?它會自動將&轉換爲&嗎? – Fandango68