それはに変換され、そこからSqlXml
取得できます。文字列の代わりにメソッドを使用 して型を取得する必要があります。XmlReader
SqlXml.CreateReader
SqlDataReader.GetSqlXml
例えば:
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);
}
}
}
更新: @Wiktor Zychla からの有益なコメントに回答するには
このアプローチのパフォーマンスは優れており、ストリームから直接 XmlReaderを作成するときに最初にフィールドの内容を文字列にロードするため、大きな XML フィールドを処理する場合ははるかに優れたものになる可能性があります。これは、Reflector または同様のツールで System.Data を調べることですぐに確認できます。SqlReader.GetString
SqlReader.GetSqlXml