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.