将字符串列表转换为xml

时间:2012-05-23 16:27:35

标签: c# wpf xml

我的一个数据库表有很多记录,其中包含以字符串形式存储的xml数据的列。检索此数据并解析字符串以获取我希望绑定到UI的特定信息的最佳方法是什么。目前我这样做 -

我的Customer表的数据列将xml数据存储为字符串

List<string> myData = new List<string>();
//populate the list with the data from the customer table
List<XElement> myXmlData = new List<XElement>();
foreach (var item in myData)
 {
      XElement xmlItem = XElement.Parse(item);
      myXmlData.Add(xmlItem);
 }

this.DataContext = myXmlData;

然后我使用数据模板使用以下

绑定到我需要的xml数据
<TextBlock Text="{Binding Path=Element[Name].Value}"/>

这可以正常工作,但我不确定这是否是正确的做事方式。性能是一个问题因此,以任何其他方式这样做可以提高性能吗?

2 个答案:

答案 0 :(得分:2)

你说性能是关注 - 你有没有测量过它?这是问题吗?这应该是你的第一道攻击线。

就代码而言 - 我更彻底地使用LINQ:

List<XElement> myXmlData = myData.Select(XElement.Parse).ToList();
this.DataContext = myXmlData;

如果方法组转换不起作用(规则很微妙,我现在无法轻易测试),您可以使用lambda表达式:

List<XElement> myXmlData = myData.Select(x => XElement.Parse(x)).ToList();
this.DataContext = myXmlData;

请注意,如果您的“填充列表”涉及LINQ,您很可能一次完成所有事情 - 例如

this.DataContext = dbContext.Customers
                            .Select(c => c.CustomerXml)
                            .AsEnumerable() // Out of LINQ to SQL or whatever
                            .Select(XElement.Parse)
                            .ToList();

答案 1 :(得分:0)

根据您需要从XML数据中获取的特定信息(从您的问题中不清楚XML是否实际存储为字符串或者您的目标是什么?),您是否考虑将其反序列化为对象然后从那里提取相关数据?

XSD是一款出色的.NET工具,可以通过自动为您创建类来提供帮助。 http://www.cricketmx.com/articles/read/using-xsd-to-assist-in-xml-deserialisation-to-objects-in-c-sharp/

有一些信息