使用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>

 

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

上一篇:sprongboot 解决spark报错:Failed to locate the winutils binary in the hadoop binary path


下一篇:IIS Web API 长时间不连接后第一次访问非常缓慢