使用LinQ读取XML文件

时间:2010-06-21 15:47:02

标签: c# .net linq

这是我的XML文件。

<?xml version="1.0" encoding="utf-8"?>
<locstrings>  
 <section name="section1">
    <locstring ID="sectionID1">
        <Name>SectionName1</Name>
    </locstring>
 </section>  
 <section name="section2">
     <locstring ID="sectionID2">
        <Name>SectionName2</Name>
     </locstring>
    <locstring ID="SectionID3">
         <Name>SectionName3</Name>
     </locstring>
 </section>

</locstrings>
  1. 我想在C#中使用Linq读取这个xml元素并将(仅部分名称)绑定到datagrid1中。
  2. 基于DataGrid1行选择,我想使用linQ在dataGrid2中显示sectionID和sectionName。

1 个答案:

答案 0 :(得分:0)

以下是一些LINQ to XML示例,用于从示例XML文件中获取数据:

        XDocument xml = XDocument.Load(@"<path to your xml file"); 

        var resultSet = from x in xml.Descendants("section")                          
                        select x.Attribute("name");

        var resultsSet2 = from x in xml.Descendants("section")
                          where x.Attribute("name") == "<the selected value of your data grid>"
                          select new
                          {                               
                              id = x.Element("locstring").Attribute("ID").Value,
                              name = x.Element("locstring").Element("Name").Value
                          };

您需要设置数据网格,然后使用.DataSource属性绑定结果集,然后在数据网格上调用.DataBind()方法。

您还需要在第一个DataGrid上设置SelectedIndexChanged事件处理程序以捕获所选值,并使用resultSet2的LINQ to XML代码来获取第二个网格结果集。

DataGrid绑定和选择都有很好的文档记录。但是这里有一些关于如何做的MSDN文档:

Data Binding to a DataGrid Control