2017-07-12 52 views
0

我有一個SQL Server中有一個XML類型列的表。我們如何從C#中讀取SQL Server中的XML類型列?

該列具有XML類型的動態值,我想在C#中讀取它的表。

我們如何區分XML中的每個屬性?

+0

是如何的問題,你可以在XML從SQL表中讀取,或者是還有別的嗎?你可以發佈你想做的代碼片段嗎? –

+0

別無他法。我可以閱讀XML。在xml類型中,有一個具有deffrent長度的xml節點,因爲它可以通過門戶視圖創建數據庫。我需要處理c#中每個記錄的deffrent類型。例如一個記錄在xml feild中有20個屬性,其他記錄在xml feild中有50個屬性 –

+0

除非我誤解了你,否則你將不得不遍歷返回的xml中的節點/元素,並且執行你需要的任何操作。看到一個例子,看看這個stackoverflow [問題和答案](https://stackoverflow.com/questions/2915294/iterating-through-all-nodes-in-xml-file)。 –

回答

0

像這樣從數據庫中獲取列。 CodeAndPassword(string)是類的屬性。

CodeAndPassword = Serializer.DeSerialize<Config>(row.Field<string>("Explanation")); 

而且你的反序列化功能sholud是這樣

public static string DeSerialize<T>(string xml) 
{ 
    XmlDocument xmlDoc = new XmlDocument(); 
    xmlDoc.PreserveWhitespace = false; 
    xmlDoc.LoadXml(xml); 

    Config config = Serializer.DeSerialize<Config>(xmlDoc.DocumentElement); 
    string code = config.Login.Code; 
    string password = config.Login.Pass; 

    return code + "+" + password; 
} 

這裏是我們的配置類

[Serializable] 
public class Config 
{ 
    public ConfigLogin Login { get; set; } 
} 

[XmlRoot("Login")] 
public class ConfigLogin 
{ 
    public string Code { get; set; } 
    public string Pass { get; set; } 
} 
+0

這是行,但我不是我的問題,我設計了一個Portal數據庫。爲了創建一個數據庫,你可以在你的數據庫中有任何表,但是現在我有一個帶有5個表的數據庫,它的一個表可以節省許多表的模板最後現在我無法檢測XML屬性上每個表的屬性,因爲每行的行都是動態的 –

+0

也許你可以像if(row [「myColumn」]。包含('<'))一樣檢查它的內容。@ SteveM.Jalili –