【发布时间】:2013-04-09 15:32:40
【问题描述】:
我正在尝试将 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 文件中。但是,如果保存了第二组联系信息,它会覆盖第一组,而不是附加它。
/编辑/
感谢 LexeRoy,我获得了更多的了解,但是,我仍然挂断了电话。
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
现在已经声明了数据源,我得到了一个抛出的异常:
【问题讨论】:
-
你试过什么?有很多方法可以解决这个问题;例如,您可以尝试反序列化或 linq to xml。这个想法是把这个“记录”变成一个你可以绑定你的列表框的对象。
-
这就是问题所在。我真的不知道从哪里开始。我的 xml 文件是从一个对话框(类中的几个文本框)写入的,this.Tag 更新列表框,并保存到 xml 文件中。但是,如果保存了第二组联系信息,它会覆盖第一组,而不是附加它。
-
我有一个想法,但是当我看到
then have the next contact appear in the next listbox row.但随后看到However, if a second set of **contact info** is saved, it overwrites the first one, rather than appending it.-- 我被困在这里,是<Contact />的联系信息 还是第二组你的意思是对同一记录的更新?。我认为,如果您在编辑中发布了您正在描述的代码,这也将有助于澄清,这首先会创建 xml。 -
尝试
.ToList ()或找到一种方法将这个“XelementCollection”转换为支持它的枚举。您收到此异常是因为无论var解析为什么类型,都不会实现IList