如何使用LINQ读取xml

本文关键字:xml 读取 LINQ 何使用 | 更新日期: 2023-09-27 18:29:34

我正在尝试使用LINQ读取XML,但遇到了问题。这是我第一次使用LINQ。我想读取xml并创建一个数据表,然后将数据表绑定到gridview。

这是我的xml

<?xml version="1.0" encoding="utf-8" ?>
<controls>
  <control id="10001" turkce="türkçe1" english="english1" />
  <control id="10002" turkce="türkçe2" english="english2" />
  <control id="10003" turkce="türkçe3" english="english3" />
  <control id="10004" turkce="türkçe4" english="english4" />
</controls>

这是我的c#代码

        DataTable dt = new DataTable();
        dt.Columns.Add("ID");
        dt.Columns.Add("Türkçe");
        dt.Columns.Add("English");
        //Load xml
        XDocument xdoc = XDocument.Load("Language.xml");
        //Run query
        var lv1s = from lv1 in xdoc.Descendants("control")
                   select new
                   {
                       id = lv1.Attribute("id").Value,
                       turkce = lv1.Attribute("turkce").Value,
                       english = lv1.Attribute("english").Value
                   };
        foreach (var lv1 in lv1s) {
            dt.Rows.Add(lv1.id,lv1.turkce,lv1.english);                
        }

当我运行这个程序时,它什么都不做。网格视图为空。我做错了什么?

如何使用LINQ读取xml

DataTable dt = new DataTable();
dt.Columns.Add("ID");
dt.Columns.Add("Türkçe");
dt.Columns.Add("English");
//Load xml
    XDocument xdoc = XDocument.Load("E:/MyApps/TestDemo/Language.xml");
    //Run query
    var lv1s = from lv1 in xdoc.Descendants("control")
               select new
               {
                   id = lv1.Attribute("id").Value,
                   turkce = lv1.Attribute("turkce").Value,
                   english = lv1.Attribute("english").Value
               };
    foreach (var lv1 in lv1s)
    {
        dt.Rows.Add(lv1.id, lv1.turkce, lv1.english);
    }
    gv.DataSource = dt;
    gv.DataBind();

请注意,您需要使用确切的URL来加载您的XML文件,我已经在上面完成了这一操作。此外,您还需要将数据表绑定到GridView。下面是我的GridView代码:

<asp:GridView ID="gv" runat="server" AutoGenerateColumns="false" Width="300px">
    <Columns>
        <asp:TemplateField>
            <HeaderTemplate>
                <asp:Label runat="server" ID="lblHeaderID" Text="ID"></asp:Label>
            </HeaderTemplate>
            <ItemTemplate>
                <asp:Label ID="lblID" runat="server" Text='<% #Eval("ID") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
         <asp:TemplateField>
              <HeaderTemplate>
                <asp:Label runat="server" ID="lblHeaderTürkçe" Text="Türkçe"></asp:Label>
            </HeaderTemplate>
            <ItemTemplate>
                <asp:Label ID="lblTürkçe" runat="server" Text='<% #Eval("Türkçe") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
         <asp:TemplateField>
              <HeaderTemplate>
                <asp:Label runat="server" ID="lblHeaderEnglish" Text="English"></asp:Label>
            </HeaderTemplate>
            <ItemTemplate>
                <asp:Label ID="lblEnglish" runat="server" Text='<% #Eval("English") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>
My grid view is displaying properly.