繁体   English   中英

读取 XML 文档并删除节点

[英]Read an XML document and removing nodes

我有一个 XML 文件,类似于下面的那个。 我将阅读 XML 并找到 EmpId 节点。 根据其他数据将确定我是否需要保留此节点或删除该节点。 目前有一个进程可以读取它并创建一个我需要删除的记录 ID 列表。 在下面的 XML 中,我希望保留 EmpId = Emp1 并删除 EmpId = Emp2。 移除的是节点。

我相信最好的方法是首先读取 XML 以确定要保留哪些节点,然后再次通过 XML 并删除必要的节点。

删除这些节点的最佳方法是什么?
我愿意创建一个新的 XML 文档并创建需要保留的节点。 根据我正在阅读的数据,如果我要删除更多节点或保留更多节点,则为 50/50。

...
<HeaderNode>
  <Details>
    <SubmissionId>1</SubmissionId>
    <EmpDetail>
      <RecordId>1</RecordId>
      <EmpDempgraphic>
        <EmpId>Emp1</EmpId>
      </EmpDempgraphic>
    </EmpDetail>
    <EmpDetail>
      <RecordId>2</RecordId>
      <EmpDempgraphic>
        <EmpId>Emp2</EmpId>
      </EmpDempgraphic>
    </EmpDetail>
  </Details>
</HeaderNode>
...

除非文档很大,否则只需将其加载到XDocument 中删除不需要的元素,然后文档保存回来。

使用 Xml Linq :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace XML
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            XDocument doc = XDocument.Load(FILENAME);

            XElement EmpDetail = doc.Descendants("EmpDetail").Where(x => (int)x.Element("RecordId") == 2).FirstOrDefault();

            EmpDetail.Remove();

        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM