在Microsoft SQL Server 2008中,我尝试将值插入到sql表中,其中 type_id为数据类型int , xml_info为数据类型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解析:第1行,第13个字符,预期字符串文字
我做错了什么?
修改
我发现错误的来源是xml元素的ID属性,<Profile ID=99>
似乎是导致错误的原因。如何正确插入带属性的xml?我是否需要以某种方式逃脱其中一个角色?
答案 0 :(得分:9)
XML文档本质上是 text ual。这不是网页的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的Microsoft版本,这与SQL Server XML相关。
答案 1 :(得分:3)
属性,ID是属性,必须引用。尝试ID =“99”