我在listBox(lstAnimals)中填充了xml信息。我可以使用以下代码从listBox中删除:
private void btnAdopt_Click(object sender, EventArgs e)
{
DialogResult result = MessageBox.Show("Complete Adoption?", "Found a Happy Home!", MessageBoxButtons.YesNo);
if (result == DialogResult.Yes)
{
if (lstAnimals.SelectedIndex >= 0)
lstAnimals.Items.Remove(lstAnimals.SelectedItem);
}
else
{
return;
}
但是,当列表更新/程序打开时,该条目将重新填充到listBox中。如何使用lixtBox同时从XML文档中删除它?
这是xml:
<?xml version="1.0" encoding="UTF-8"?>
<Animals>
<Animal>
<Name>Bruce</Name>
<Type>Dog</Type>
<Age>Adult</Age>
</Animal>
<Animal>
<Name>Gizmo</Name>
<Type>Cat</Type>
<Age>Senior</Age>
</Animal>
</Animals>
我被问到如何填充我的listBox,所以这里是代码:
private void UpdateList()
{
var an = XElement.Load(@"Animals.xml")
.Descendants("Animal")
.OrderBy(xe => (xe.Element("Name").Value))
.ToList<XElement>();
lstAnimals.Items.Clear();
foreach (var a in an)
lstAnimals.Items.Add(new Animal()
{
name = a.Element("Name").Value.ToString(),
type = a.Element("Type").Value,
age = a.Element("Age").Value
});
}
listBox呈现的图片: http://img.photobucket.com/albums/v84/Shades9323/shelterapp_zps4c22868c.jpg
答案 0 :(得分:0)
您可以使用与此
类似的 XmlDocument removeChild 方法XmlDocument doc ;
doc = new XmlDocument();
doc.Load("path to your XML file");
XmlNode animalNode;
XmlNode root = doc.DocumentElement;
animalNode=root.SelectSingleNode("descendant::Animal[Name='" + lstAnimals.SelectedItem + "']");
doc.RemoveChild(animalNode) ;
//save the XML file
答案 1 :(得分:0)
将此代码添加到按钮点击事件
中 string text = lstAnimals.SelectedItem.ToString();
string animalName = text.Substring(0, text.IndexOf("is")).Trim();
XDocument xDoc = XDocument.Load("Animals.xml"); //here is your filepath
XElement element = (from x in xDoc.Descendants("Animal")
where x.Element("Name").Value == animalName
select x).First();
element.Remove();
xDoc.Save("Animals.xml");
lstAnimals.Items.Remove(lstAnimals.SelectedItem);
当然,如果你向你的动物添加Id属性,它会更容易。只需将id变量存储到listBox项目“Tag”属性中..
答案 2 :(得分:0)
在这里你可以使用linq to xml
来做到这一点 private void btnAdopt_Click(object sender, EventArgs e)
{
DialogResult result = MessageBox.Show("Complete Adoption?", "Found a Happy Home!", MessageBoxButtons.YesNo);
if (result == DialogResult.Yes)
{
if (lstAnimals.SelectedIndex >= 0)
{
lstAnimals.Items.Remove(lstAnimals.SelectedItem);
XDocument xDoc = XDocument.Load("test.xml");
xDoc.Descendants("Animal").Where(x => x.Element("Name").Value.ToString() == lstAnimals.SelectedItem ).Remove();
xDoc.Save("test1.xml");
}
}
else
{
return;
}