[英]What does the SQL Server XML datatype translate to in .NET and how do I convert it to XmlDocument?
我們在數據庫中有一個類型為xml
。 我正在通過.net SqlDataReader
讀取此信息,但我不確定要將其轉換為什么。
msdn表( http://msdn.microsoft.com/en-us/library/cc716729.aspx )表明它是.net類型的Xml
,但是沒有System.Xml
,只有System.Web.UI.WebControls.Xml
所以我不確定這是否正確。
所以我的問題是:
當我從SqlDataReader
讀取它時,我將SqlDbType.Xml
轉換為什么,以及如何將其轉換為XmlDocument
?
它轉換為SqlXml
,您可以從中獲取帶有SqlXml.CreateReader
的XmlReader
。 您必須使用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的有用評論
這種方法的性能提高與大型XML領域打交道時,可以有很多更好,因為SqlReader.GetString
將同時字段內容加載到一個字符串第一SqlReader.GetSqlXml
創建直接從流一個XmlReader。 可以通過查看Reflector或類似工具中的System.Data來快速驗證。
我記得把它扔成一個字符串。 用字符串提供XmlDocument就像平常一樣。
我自己使用這個方法,使用SqlCommand.ExecuteXmlReader();
XmlDocument xdoc = new XmlDocument();
using (SqlCommand command = new SqlCommand(queryString, connection))
{
XmlReader reader = command.ExecuteXmlReader();
if (reader.Read())
{
xdoc.Load(reader);
}
}
當然,有一個System.Xml命名空間 :
System.Xml命名空間為處理XML提供基於標准的支持。
但是,要使用它,您可能必須將其添加為項目中的參考。 Microsoft有在Visual Studio中執行此操作的說明 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.