我有一个像这样的XML文件:
<position>
<Game> Batman Arkham City </Game>
<Movie> Inception </Movie>
<Movie> Dark Knight </Movie>
[etc...]
</position>
我想要的只是删除现有文件中的一行,如果是InnerText == TextBox
。例如:如果我将“初始”文本放入文本框并按下按钮,则程序将删除“初始化”行。我怎样才能做到这一点?我尝试了很多不同的方式。对我来说非常重要的是,我不想更改XML文件的格式,因为我已经为其他选项创建了代码,例如将项目输入到列表框中,或者在当前XML文件中创建新标题。
你能说出我该怎么做?
编辑(来自评论):我上次尝试这样做:
XmlDocument dok = new XmlDocument();
dok.Load("DataBase/list.xml");
foreach(XmlNode node in dok.SelectNodes("position"))
{
if (node.SelectSingleNode("Game").InnerText == searchTxt.Text)
{
node.RemoveChild(node);
}
}
dok.Save("DataBase/list.xml");
答案 0 :(得分:0)
using (var reader = new StringReader(xml))
{
var element = XElement.Load(reader);
var toBeRemovedElements = element.Elements().Where(e => e.Value == parameter).ToList();
toBeRemovedElements.ForEach(e => e.Remove());
}
如果我非常理解你的问题,请告诉我。
祝你好运答案 1 :(得分:0)
您正在尝试从节点中删除节点,但这不起作用。从父节点dok。
中删除节点XmlDocument dok = new XmlDocument();
dok.Load("DataBase/list.xml");
foreach(XmlNode node in dok.SelectNodes("position"))
{
if (node.SelectSingleNode("Game").InnerText == searchTxt.Text)
{
dok.RemoveChild(node);
}
}
dok.Save("DataBase/list.xml");