Превежда се на 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 директно от потока. Това може бързо да се провери с поглед към System.Data в Reflector или подобен инструмент.