使用LINQ在Cml文件中的特定节点下添加新元素 - C#

时间:2018-01-21 02:37:15

标签: c# xml linq

我是C#的新手,我已经在几天和几天里尝试过所有东西,但我没有解决问题的答案。

我有一个像这样的xml文档,在windows窗体应用程序中填充树视图:

<?xml version="1.0" encoding="utf-8" ?>
<root>
<folder title='Standard Elements'>
  <folder title='Screw' >
    <folder title='Type 1' >
      <record title='DIN EN ISO 4762' />
      <record title='DIN EN ISO 7964' />
      <record title='DIN EN ISO 21269' />
    </folder>
    <folder title='Type 2' >
      <record title='DIN EN ISO 4026' />
      <record title='DIN EN ISO 4027' />
      <record title='DIN EN ISO 4028' />
    </folder>
    <folder title='Type 3' >
      <record title='DIN EN ISO 4014' />
      <record title='DIN EN ISO 4017' />
      <record title='DIN EN ISO 4762' />
      <record title='DIN EN ISO 24015' />
    </folder>
  </folder>
  <folder title='Bearing' >
  </folder>
  <folder title='Pin' >
  </folder>
</folder>
  <folder title='Shaft' >
  </folder>
</root>

我必须在节点下面添加一个新元素,标题为&#34; Type 2&#34;或其他指定的节点。我在我的应用程序中使用了Linq,但我不知道如何处理这个问题。

2 个答案:

答案 0 :(得分:0)

您可以使用框架提供的XMLDocument类型。选择所需的节点,创建新节点对象并将其作为子节点添加到所选节点。

您的问题与此类似:Modify XML existing content in C#

答案 1 :(得分:0)

尝试以下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            XDocument doc = XDocument.Load(FILENAME);

            XElement type2 = doc.Descendants("folder").Where(x => (string)x.Attribute("title") == "Type 2").FirstOrDefault();

            type2.Add(new XElement("record", new XAttribute("title", "DIN EN ISO 4029")));
        }
    }
}