它转化为SqlXml
,你可以从中得到XmlReader
一个SqlXml.CreateReader
。您必须使用 SqlDataReader.GetSqlXml
方法来获取类型而不是字符串。
例如:
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
SqlXml xmlData =
reader.GetSqlXml(0);
XmlReader xmlReader = xmlData.CreateReader();
xmlReader.MoveToContent();
while (xmlReader.Read())
{
if (xmlReader.NodeType == XmlNodeType.Element)
{
string elementName = xmlReader.LocalName;
xmlReader.Read();
Console.WriteLine(elementName + ": " + xmlReader.Value);
}
}
}
更新:回答@Wiktor Zychla 的有用评论
这种方法的性能更好,并且在处理大型 XML 字段时会好很多SqlReader.GetString
,因为会先将字段内容加载到字符串中,同时SqlReader.GetSqlXml
直接从流中创建 XmlReader。这可以通过查看 Reflector 中的 System.Data 或类似工具来快速验证。