Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Was übersetzt der XML-Datentyp von SQL Server in .NET und wie konvertiere ich ihn in XmlDocument?

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.