簡體   English   中英

SQL Server XML數據類型在.NET中轉換為什么?如何將其轉換為XmlDocument?

[英]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.CreateReaderXmlReader 您必須使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM