Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
206 views
in Technique[技术] by (71.8m points)

c# - How to remove XML node by attribute

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>

This code doesn't remove the node from xml. Could you help me to find problem?

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);
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

This should works:

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);

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...