如何使用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);
}
当我运行这个程序时,它什么都不做。网格视图为空。我做错了什么?
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.