Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Que traduit le type de données XML SQL Server dans .NET et comment puis-je le convertir en XmlDocument ?

Il se traduit par SqlXml et vous pouvez obtenir un XmlReader avec SqlXml.CreateReader à partir de cela. Vous devez utiliser SqlDataReader.GetSqlXml méthode pour obtenir le type au lieu d'une chaîne.

Par exemple :

        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);
                }
            }
        }

MISE À JOUR : Pour répondre à un commentaire utile de @Wiktor Zychla

Les performances de cette approche sont meilleures et peuvent être beaucoup mieux lorsqu'il s'agit de grands champs XML car SqlReader.GetString chargera d'abord le contenu du champ dans une chaîne tandis que SqlReader.GetSqlXml crée directement un XmlReader à partir du flux. Cela peut être rapidement vérifié en regardant System.Data dans Reflector ou un outil similaire.