Es wird übersetzt zu SqlXml
und Sie können einen XmlReader erhalten mit SqlXml.CreateReader
davon. Sie müssten SqlDataReader.GetSqlXml
Methode, um den Typ anstelle einer Zeichenfolge zu erhalten.
Zum Beispiel:
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);
}
}
}
AKTUALISIERUNG: Um auf einen hilfreichen Kommentar von @Wiktor Zychla zu antworten
Die Leistung dieses Ansatzes ist besser und kann viel sein besser beim Umgang mit großen XML-Feldern, da SqlReader.GetString lädt den Feldinhalt zuerst in einen String, während SqlReader.GetSqlXml erstellt direkt aus dem Stream einen XmlReader. Das lässt sich schnell mit einem Blick auf System.Data in Reflector oder einem ähnlichen Tool überprüfen.