【问题标题】:adding a new element below specific node in a xml file using LINQ - C#使用 LINQ - C# 在 xml 文件中的特定节点下方添加新元素
【发布时间】:2018-01-21 02:37:14
【问题描述】:

我是 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>

我必须在标题为“Type 2”或其他指定节点的节点下方包含一个新元素。我在我的应用程序中使用了 Linq,但我不知道如何处理这种情况。

【问题讨论】:

    标签: c# xml linq


    【解决方案1】:

    尝试以下:

    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")));
            }
        }
    }
    

    【讨论】:

    • 效果很好。其实我现在觉得很傻。感谢您的回答。
    【解决方案2】:

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

    你的问题类似这样:Modify XML existing content in C#

    【讨论】:

    • 如果我理解使用该解决方案的权利,我将不得不修改我无法执行的 XML 文件的结构,因为我从其他应用程序接收文件。我必须找到属性为“Type 2”的节点并在其中添加一个新节点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    相关资源
    最近更新 更多