小编典典

在SQL中的CAST中使用与号

sql

SQL Server 2005上的以下代码段在与号“&”上失败:

select cast('<name>Spolsky & Atwood</name>' as xml)

有人知道解决方法吗?

更长的解释是,我需要更新XML列中的一些数据,并且我正在通过将XML值转换为varchar来进行搜索和替换类型的修改,并使用此转换进行替换和更新XML列。


阅读 252

收藏
2021-04-28

共1个答案

小编典典

select cast('<name>Spolsky &amp; Atwood</name>' as xml)

标准中XML不允许标记内的文字“&”号XML,并且此类文档将无法通过任何XML解析器进行解析。

AnXMLSerializer()将输出与号HTML编码的符号。

如下代码:

using System.Xml.Serialization;

namespace xml
{
    public class MyData
    {
        public string name = "Spolsky & Atwood";
    }

    class Program
    {
        static void Main(string[] args)
        {
            new XmlSerializer(typeof(MyData)).Serialize(System.Console.Out, new MyData());
        }
    }
}

将输出以下内容:

<?xml version="1.0" encoding="utf-8"?>
<MyData
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <name>Spolsky &amp; Atwood</name>
</MyData>

,用&amp;代替&

2021-04-28