Nó dịch thành SqlXml
và bạn có thể nhận được XmlReader
với SqlXml.CreateReader
từ nó. Bạn phải sử dụng SqlDataReader.GetSqlXml
để lấy kiểu thay vì một chuỗi.
Ví dụ:
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);
}
}
}
CẬP NHẬT: Để trả lời nhận xét hữu ích từ @Wiktor Zychla
Hiệu suất của phương pháp này tốt hơn và có thể rất nhiều tốt hơn khi xử lý các trường XML lớn vì SqlReader.GetString
sẽ tải nội dung trường vào một chuỗi trước tiên trong khi SqlReader.GetSqlXml
tạo một XmlReader từ luồng trực tiếp. Điều đó có thể nhanh chóng được xác minh bằng cách xem System.Data trong Reflector hoặc một công cụ tương tự.