您好我需要删除XML文件中的项目,我可以添加它没问题,但想知道如何调整文件中的一个项目。我需要删除名为Mike的项目和日期,我该如何实现?
修改:我收到NullReferenceException
这是我的XML
<Items>
<Item>
<Name>Mike</Name>
<Date>5/4/2000</Date>
</Item>
<Item>
<Name>Martin</Name>
<Date>5/4/2010</Date>
</Item>
</Items>
这是我正在尝试的代码
public void deleteElement()
{
//Get users private store info
IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForApplication();
IsolatedStorageFileStream isoStream;
//open selected file
isoStream = new IsolatedStorageFileStream("Item.xml", System.IO.FileMode.Open, System.IO.FileAccess.Read, isoStore);
XDocument xml = XDocument.Load(isoStream);
isoStream.Close();
//Find section
XElement sectionElement = xml.Descendants("Item").Where(c => c.Attribute("Name").Value.Equals("Mike")).FirstOrDefault();
//Find item and remove it
sectionElement.Elements("Item").Where(c => c.Attribute("Name").Value.Equals("Mike")).FirstOrDefault().Remove();
isoStream.Close(); //Seems unnecessary but it's needed.
//Write xml file
isoStream = new IsolatedStorageFileStream("Item.xml", FileMode.Create, FileAccess.Write, isoStore);
xml.Save(isoStream);
isoStream.Close();
}
如果你能帮助我,我将不胜感激。
答案 0 :(得分:1)
xml.Root.Elements("Item")
.Where(item => item.Element("Name").Value == "Mike")
.FirstOrDefault()
.Remove();
产地:
<Items>
<Item>
<Name>Martin</Name>
<Date>5/4/2010</Date>
</Item>
</Items>
请注意以下几点:
答案 1 :(得分:1)
使用this Xml Library,您可以将其编写为:
XElement mike = xml.Root.XPathElement("Item[Name='Mike']");
mike.Remove();
答案 2 :(得分:0)
从粗略的一瞥看起来好像你试图两次检索相同的元素。
// Retrieve the desired Item element
XElement sectionElement = xml.Descendants("Item").Where(c => c.Attribute("Name").Value.Equals("Mike")).FirstOrDefault();
// Retrieve (and remove) the desired Item element
// This line will fail, as there is no Item descendants of the Item element
sectionElement.Elements("Item").Where(c => c.Attribute("Name").Value.Equals("Mike")).FirstOrDefault().Remove();
如何使用一行?
xml.Descendants("Item").Where(c => c.Attribute("Name").Value.Equals("Mike")).FirstOrDefault().Remove();
顺便说一句:我不认识使用的方法,但“名称”可能不是属性,而是一个元素。