如何将SqlXml转换为XmlText?

时间:2011-07-11 14:17:41

标签: c# xml sql-server-2008 types

我正在读取SQL Server数据库中以Xml格式存储的一些数据,我正在使用C#来读取这些数据。我们在System.Xml中有一个名为XmlText的类型,但它不允许我将数据从SqlXml转换并存储到XmlText。我需要将数据库中的数据以XML格式复制到某个对象,然后序列化该对象。然后我需要通过网络发送一组对象。这里有什么解决方案?

1 个答案:

答案 0 :(得分:8)

最终,SqlXmlXmlText之间没有直接链接(实际上,XmlText仅代表特定类型的节点,而不是xml)。您将不得不降至stringbyte[]级别并再次备份(因为您没有使用流媒体阅读器)。例如:

string xml = reader.GetSqlXml(7).Value;
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);

或:

string xml = reader.GetSqlXml(7).Value;
XElement el = XElement.Parse(xml); 

或(可能更高效)使用XmlReader API:

XmlDocument doc = new XmlDocument();
using(XmlReader xr = reader.GetSqlXml(7).CreateReader()) {
    doc.Load(xr);
}

XElement el;
using(XmlReader xr = reader.GetSqlXml(7).CreateReader()) {
    el = XElement.Load(xr);
}