使用C#从XML中批量删除指定节点

删除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>

 

posted @ 2020-05-07 21:26  Akatsuki-  阅读(1034)  评论(0编辑  收藏  举报