Det översätts till SqlXml
och du kan skaffa en XmlReader
med SqlXml.CreateReader
från det. Du måste använda SqlDataReader.GetSqlXml
metod för att få typen istället för en sträng.
Till exempel:
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);
}
}
}
UPPDATERING: För att svara på en användbar kommentar från @Wiktor Zychla
Prestanda för detta tillvägagångssätt är bättre och kan vara mycket bättre när man hanterar stora XML-fält eftersom SqlReader.GetString
kommer att ladda fältinnehållet i en sträng först medan SqlReader.GetSqlXml
skapar en XmlReader från strömmen direkt. Det kan snabbt verifieras med en titt på System.Data i Reflector eller ett liknande verktyg.