删除XML文件中的节点

时间:2018-01-20 19:14:29

标签: c# xml

(我知道有这样的问题,但我找不到解决方案)

我有一个XML文档

<?xml version="1.0"?>
<ArrayOfDay xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Day>
    <Caption>Mon 01</Caption>
    <Events>
      <Event>
        <Title>testTitle</Title>
        <Text>testText</Text>
        <Sound />
        <DateTime>2018-01-01T00:00:00</DateTime>
      </Event>

我试图根据标题删除“事件”节点,有我的代码

XmlDocument doc = new XmlDocument();
            doc.LoadXml(File.ReadAllText(_eventsFile));
            XmlNode node = doc.SelectSingleNode("/Day/Events/Event[@Title="+txtTitle.Text+"]");
            if (node != null) { node.ParentNode.RemoveChild(node); }
            doc.Save(_eventsFile);
            this.Close();

无论我做什么都不行,有什么想法吗?

txtTitle的值是Title的{​​{1}},它会自动获得vaule

1 个答案:

答案 0 :(得分:2)

您正在使用的路径表达式中的2个错误:

  • 您需要在要用作过滤器的文本周围使用单引号
  • @查找具有Title = the text属性的元素,而不是子元素

试试这个:

    XmlNode node = doc.SelectSingleNode("/Day/Events/Event[Title='"+txtTitle.Text+"']");