2012-11-04 45 views
2

在Microsoft SQL Server 2008中,我試圖插入值到一個SQL表中的列數據類型INT的TYPE_ID和xml_info數據類型的XML的。我使用下面的查詢:XML解析錯誤:「字符串文字預計」插入值到表

INSERT INTO tbl_applied_devices ([type_id],[xml_info]) 
VALUES (1,'<Profile ID=99><Server><ID>BC4A18CA-AFB5-4268-BDA9-C990DAFE7783</ID> <Name>localhost</Name><Services></Services></Server></Profile>') 

但我不斷收到此錯誤:

Msg 9413, Level 16, State 1, Line 4
XML parsing: line 1, character 13, A string literal was expected

我在做什麼錯誤?

編輯: 我發現,錯誤的來源是XML元素的ID屬性,<Profile ID=99>似乎是什麼原因造成的錯誤。我怎樣才能正確地插入xml屬性?我需要以某種方式逃避其中一個角色?

回答

9

XML文檔是文本性質。這不是一個網頁的HTML,所以你需要引號中的所有屬性值(單或雙)。

INSERT INTO tbl_applied_devices ([type_id],[xml_info]) 
VALUES (1,'<Profile ID="99"><Server><ID>BC4A18CA-AFB5-4268-BDA9-C990DAFE7783</ID> <Name>localhost</Name><Services></Services></Server></Profile>') 

這是很難解析XML 1.0 specifications但這裏有一個微軟版本.Net 4.5,這僅僅是用於SQL Server XML作爲有關。

+1

我也注意到,解析XML比解析XML規範更容易。 ;-) – RBarryYoung

3

屬性,ID是屬性,必須加引號。嘗試ID =「99」