如何从SQL Server原始XML转换为C#?

时间:2015-03-11 10:13:46

标签: c# sql-server xml

我有一个CLR存储过程,它接收原始XML作为参数,例如:

SET @xml = (SELECT * FROM titles FOR XML RAW)

会给出

<row id="1" description="Mr." />
<row id="2" description="Mrs." />

上面的@xml被传递给一个通用的CLR存储过程,而后者又需要解析它收到的数据。

有没有一种简单的方法可以将原始XML转换为C#中的列表?

1 个答案:

答案 0 :(得分:0)

根据以下评论进行编辑。

var xml =  XDocument.Parse(string.Format("<root>{0}</root>", @"<row id=""1"" description=""Mr."" /><row id=""2"" description=""Mrs."" />"));

var rows = from node in xml.Descendants("row")
           select new
           {
               Id = node.Attribute("id").Value,
               description = node.Attribute("description").Value
           };

上面将首先将xml包装在强制root中,它不需要被称为root,但XDocument需要有一个根节点,否则它会摇摆不定。

然后使用linq-to-XML,我们将每个row节点的属性解析为匿名对象列表。您还可以创建一个类型化对象并以这种方式解析它,但这实际上取决于您的要求。