Asp.net 关于读取xml文件的困惑
我正在尝试从我的xml文件中检索一些数据到listview。我有点困惑。这就是我到目前为止所拥有的。如何做到这一点。提前谢谢Asp.net 关于读取xml文件的困惑,asp.net,linq,listview,Asp.net,Linq,Listview,我正在尝试从我的xml文件中检索一些数据到listview。我有点困惑。这就是我到目前为止所拥有的。如何做到这一点。提前谢谢 XDocument doc=XDocument.Load(Server.MapPath("PhoneBook.xml")); var q = from c in doc.Descendants("Persons") select new { name=c.Element("Name"), phone=c.Element("Phone"), }; for
XDocument doc=XDocument.Load(Server.MapPath("PhoneBook.xml"));
var q = from c in doc.Descendants("Persons") select new
{
name=c.Element("Name"),
phone=c.Element("Phone"),
};
foreach (var item in q)
{
var lvi = new ListViewItem(item.name);
}
没有示例XML很难预测,但我注意到您缺少“Root”元素,基于此,下一个要导航的项目是“Root:
如果这不是答案,请分享您的XML示例,这将帮助我们提供更好的答案。代码的第一部分看起来不错。您不需要foreach循环。下面是您的代码的外观:
XDocument doc = XDocument.Load(Server.MapPath("PhoneBook.xml"));
var q = from c in doc.Descendants("Persons")
select new
{
name = c.Element("Name"),
phone = c.Element("Phone"),
};
ListView1.DataSource = q;
ListView1.DataBind();
在标记中,您可以使用名称或电话绑定任何模板字段。您的ListView可能如下所示:
<asp:ListView runat="server" ID="ListView1">
<LayoutTemplate>
<table runat="server" id="table1">
<tr runat="server" id="itemPlaceholder">
</tr>
</table>
</LayoutTemplate>
<ItemTemplate>
<tr id="Tr1" runat="server">
<td id="Td1" runat="server">
<asp:Label ID="NameLabel" runat="server"
Text='<%#Eval("Name") %>' />
</td>
<td id="Td2" runat="server">
<asp:Label ID="PhoneLabel" runat="server"
Text='<%#Eval("Phone") %>' />
</td>
</tr>
</ItemTemplate>
</asp:ListView>
这种布局将产生这种类型的输出:
希望有帮助!首先更改代码,因为您将名称和电话分配给XElement,而不是元素值:
var q = from c in doc.Descendants("Persons")
select new {
name=c.Element("Name").Value,
phone=c.Element("Phone").Value
};
然后尝试以下代码:
listView1.View = View.Details;
listView1.Columns.Add("Person Name", 200, HorizontalAlignment.Left);
listView1.Columns.Add("Phone Number", 100, HorizontalAlignment.Left);
foreach (var item in q)
{
ListViewItem listItem = new ListViewItem();
listItem.Text = item.Name;
listItem.SubItems.Add(item.Phone);
listView1.Items.Add(listItem);
}
您收到了什么错误?
listView1.View = View.Details;
listView1.Columns.Add("Person Name", 200, HorizontalAlignment.Left);
listView1.Columns.Add("Phone Number", 100, HorizontalAlignment.Left);
foreach (var item in q)
{
ListViewItem listItem = new ListViewItem();
listItem.Text = item.Name;
listItem.SubItems.Add(item.Phone);
listView1.Items.Add(listItem);
}