我正在读取SQL Server数据库中以Xml格式存储的一些数据,我正在使用C#来读取这些数据。我们在System.Xml中有一个名为XmlText的类型,但它不允许我将数据从SqlXml转换并存储到XmlText。我需要将数据库中的数据以XML格式复制到某个对象,然后序列化该对象。然后我需要通过网络发送一组对象。这里有什么解决方案?
答案 0 :(得分:8)
最终,SqlXml
和XmlText
之间没有直接链接(实际上,XmlText
仅代表特定类型的节点,而不是xml)。您将不得不降至string
或byte[]
级别并再次备份(因为您没有使用流媒体阅读器)。例如:
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);
}