3

在 Microsoft SQL Server 2008 中,我试图将值插入到带有数据类型 int 的列 type_id 和数据类型XML 的 xml_info的 sql 表中。我正在使用以下查询:

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>')

但我不断收到此错误:

消息 9413,级别 16,状态 1,第 4
行 XML 解析:第 1 行,字符 13,应为字符串文字

我做错了什么?

编辑: 我发现错误的来源是 xml 元素的 ID 属性,<Profile ID=99>似乎是导致错误的原因。如何正确插入带有属性的 xml?我需要以某种方式逃避其中一个角色吗?

4

2 回答 2

10

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 规范非常困难,但这里有一个适用于.Net 4.5的 Microsoft 版本,它与 SQL Server XML 一样相关。

于 2012-11-04T23:21:51.330 回答
3

属性,ID是一个属性,必须加引号。试试 ID="99"

于 2012-11-04T23:20:32.830 回答