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.