删除userId不为2000的所有term节点。
关于XPath语法可自行搜索学习。
Root已经是根节点grimoire了,所以不需要写在XPath中。
借助Linq的Where方法还可以做到更细粒度的过滤。
using System.Collections.Generic; using System.Xml.Linq; using System.Xml.XPath; namespace ConsoleApp11 { class Program { static void Main(string[] args) { XElement Root = XElement.Load("foo.xml"); IEnumerable<XElement> Selected = Root.XPathSelectElements("terms/term[userId!=2000]"); Selected.Remove(); Root.Save("foo-save.xml"); } } }
XML文档如下:
<grimoire> <terms> <term> <gameId>...</gameId> <userId>2000</userId> <language>...</language> <timestamp>...</timestamp> <pattern>...</pattern> <text>...</text> </term> <terms> <grimoire>