【问题标题】:How to remove XML node by attribute如何按属性删除 XML 节点
【发布时间】:2015-09-07 12:05:52
【问题描述】:

XML

<WorkTable>
    <Days>
      <Day id="0" name="Monday"/>
      <Day id="1" name="Tuesday"/>
      <Day id="2" name="Wednesday"/>
      <Day id="3" name="Thursday" />
      <Day id="4" name="Friday"/>
      <Day id="5" name="Saturday"/>
      <Day id="6" name="Sunday"/>
    </Days>
    <SpecialDays>
      <Day date="22.07.2015"/>
      <Day date="24.07.2015"/>
    </SpecialDays>
</WorkTable>

此代码不会从 xml 中删除节点。你能帮我找出问题吗?

XmlDocument doc = new XmlDocument();
doc.Load(localXMLpath + xmlFileName);
XmlNode delNode= doc.SelectSingleNode("/WorkTable/SpecialDays/Day[@date='24.07.2015']");
delNode.ParentNode.RemoveChild(delNode);
doc.Save(localXMLpath + xmlFileName);

【问题讨论】:

  • 应该和我修复的一样
  • 您是否遇到特定错误?
  • 你确定你的问题不在于它覆盖了文件吗?代码工作正常
  • 不,它不会给出错误。当我打开 xml 时,我发现没有任何变化。
  • 如果你想删除日期为 24.07.2015 的节点,它工作正常。

标签: c# xml


【解决方案1】:

这应该可行:

XDocument xdoc = XDocument.Load(filename);
xdoc.Element("WorkTable").Element("SpecialDays").Elements("Day")
     .Where(x => (string)x.Attribute("date") == "24.07.2015")
     .Remove();
xdoc.Save(filename);

【讨论】:

    【解决方案2】:

    您的代码工作正常,问题是您正试图覆盖您从中读取数据的文件。

    看到这个答案C# : the close method of Xml.Load(file)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多