2017-07-12 18 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 –