Het vertaalt zich naar SqlXml
en je kunt een XmlReader
. krijgen met SqlXml.CreateReader
ervan. U moet SqlDataReader.GetSqlXml
methode om het type te krijgen in plaats van een string.
Bijvoorbeeld:
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);
}
}
}
UPDATE: Om een nuttige opmerking van @Wiktor Zychla te beantwoorden
De prestaties van deze aanpak zijn beter en kunnen veel . zijn beter bij het omgaan met grote XML-velden omdat SqlReader.GetString
laadt de veldinhoud eerst in een string terwijl SqlReader.GetSqlXml
maakt rechtstreeks een XmlReader van de stream. Dat kan snel worden geverifieerd met een blik op System.Data in Reflector of een vergelijkbare tool.