c# - 如何将 XML "row"加载到列表框 C# 的索引中

标签 c# xml listbox indexing

我正在尝试将 xml 的单个“行”加载到列表框索引中。

<?xml version="1.0" encoding="utf-8"?>
<!--User | 4/16/2013 @ 10:05 PM-->
<ContactBook>
<Contact>
<Name>
   <Name>personName</Name>
</Name>
<City>
   <City>testCity</City>
</City>
<State>
   <State>testState</State>
</State>
<Phone>
   <Phone>testPhone</Phone>
</Phone>
</Contact>
</ContactBook>

所以我想让姓名、城市、州和电话显示在列表框中的一行上,然后让下一个联系人出现在下一个列表框行中。

我还想知道是否有人有一些好的网站,可以显示有关如何更新 XML 文件而不是覆盖它们的教程。

/由于评论中的问题进行编辑/

我真的不知道从哪里开始。我的 xml 文件是从对话框(类中的几个文本框)写入的, this.Tag 更新列表框,并保存到 xml 文件。但是,如果保存第二组联系信息,它将覆盖第一组联系信息,而不是附加它。

/编辑/

感谢 LexRoy,我有了更多的了解,但是,我仍然挂断了。

private void updateXml_Click(object sender, EventArgs e)
{
    var xDoc = XDocument.Load(book);
    var listBoxItems = xDoc.Elements("Contact");
    listBox1.Items.Add(listBoxItems);
}

其中 book 是代表我的 xml 文件路径的变量,listBox1 是显而易见的。 不幸的是,单击按钮时,第一行获取此值:

System.Xml.Linq.XContainer+<GetElements>d_11 

现在数据源已被声明,我得到一个抛出的异常: error

最佳答案

您可以使用XDocument您可以在其中表示 XML 文档并迭代其每个项目。对于您的示例,

您可以为联系人创建一个对象,其中您将拥有名称城市、和电话属性。

var xDoc = XDocument.Load("ContactBook.xml");
var listBoxItems = xDoc.Elements("Contact"); //This will be a list of IEnumerable<XElement> child elements of Contact xml tag

然后您可以通过代码操纵这些东西。

编辑:

listBox1.DataSource = listBoxItems.ToList();
listBox1.DisplayMember = "Value";
listBox1.ValueMember = "Value";

关于c# - 如何将 XML "row"加载到列表框 C# 的索引中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16050422/

相关文章:

c# - 使用 wpf 在列表框中搜索

jquery - 列表框选项上的双击事件在 IE 中未触发

c# - 在 C# 中通过代码设置列表框项的字体和颜色

ios - 使用 RestKit 在 iOS 中解析 JSON 失败

java - 如何为包含的布局设置java文件?

c# - 如何在禁用的按钮上显示工具提示?

c# - 在网络浏览器控件中打印谷歌地图 - 不会显示方向线

c# - 无论我输入什么数字,我的文本框总是与 '0' 进行比较

c# - 向基于模型的列表添加值

java - Oxygen XML 编辑器和 Saxon 扩展功能