SQL Server 2005上的以下代码段在与号“&”上失败:
select cast('<name>Spolsky & Atwood</name>' as xml)
有人知道解决方法吗?
更长的解释是,我需要更新XML列中的一些数据,并且我正在通过将XML值转换为varchar来进行搜索和替换类型的修改,并使用此转换进行替换和更新XML列。
select cast('<name>Spolsky & Atwood</name>' as xml)
标准中XML不允许标记内的文字“&”号XML,并且此类文档将无法通过任何XML解析器进行解析。
XML
AnXMLSerializer()将输出与号HTML编码的符号。
XMLSerializer()
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 & Atwood</name> </MyData>
,用&代替&。
&
&