【问题标题】:XML parsing error: 'A string literal was expected' when inserting values into tableXML 解析错误:向表中插入值时出现“需要字符串文字”
【发布时间】:2012-11-04 22:50:30
【问题描述】:

在 Microsoft SQL Server 2008 中,我尝试将值插入到带有列 type_id of datatype intxml_info of datatype XML 的 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 属性,&lt;Profile ID=99&gt; 似乎是导致错误的原因。如何正确插入带有属性的 xml?我需要以某种方式转义其中一个角色吗?

【问题讨论】:

    标签: sql xml sql-server-2008 tsql insert


    【解决方案1】:

    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 的Microsoft 版本,它与SQL Server XML 一样相关。

    【讨论】:

    • 我也注意到解析 XML 似乎比解析 XML 规范容易得多。 ;-)
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-18
      • 1970-01-01
      • 2020-07-22
      • 2011-12-22
      • 2011-12-16
      相关资源
      最近更新 更多