Překládá se do SqlXml
a můžete získat XmlReader
s SqlXml.CreateReader
z toho. Budete muset použít SqlDataReader.GetSqlXml
metoda k získání typu místo řetězce.
Například:
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);
}
}
}
AKTUALIZACE: Chcete-li odpovědět na užitečný komentář od @Wiktor Zychla
Výkon tohoto přístupu je lepší a může být hodně lepší při práci s velkými poli XML, protože SqlReader.GetString
načte obsah pole nejprve do řetězce, zatímco SqlReader.GetSqlXml
vytvoří XmlReader přímo ze streamu. To lze rychle ověřit pohledem na System.Data v Reflectoru nebo podobném nástroji.