【问题标题】:Copying and Renaming an Element from one XML file to another XML file in c#在 C# 中将元素从一个 XML 文件复制并重命名为另一个 XML 文件
【发布时间】:2011-12-21 15:33:18
【问题描述】:

我想从我的 asp.net GUI 中将数据添加到 xml 文件中。所以我在 GUI 中有一个文本框。

所以如果用户输入“IL”那么我想以这种方式添加一个部分

<Employee Location="IL">
    <Male Value="True" />
    <Name Value="xxx" />
</Employee>

XML 文件:

 <Emp>
  <Employee Location="NJ">
    <Male Value="True" />
    <Name Value="xxx" />
   </Employee>
  <Employee Location="NY">
    <Male Value="True" />
    <Name Value="xxx" />
   </Employee>
</Emp>

注意:

每次我在这里添加一个新部分时,内部元素都是不变的,即以下值始终相同。

<Male Value="True" />
<Name Value="xxx" />

我正在寻找如何使用 LINQ to XML 实现这一目标?

【问题讨论】:

  • 真的任何 linq to xml 教程都会向您展示如何添加元素并保存到 xml 文件。
  • 在发帖前自己做一些研究 :) 使用 Linq to Xml 在 google 上搜索或在 c# 中创建 Xml 会给你很多见解。
  • @MarkW 我的问题是我需要关于如何复制代码的常量部分的建议。我必须即时复制还是将其保存到不同的 xml 文件?
  • 为什么有人在这里投反对票?

标签: c# .net xml linq-to-xml


【解决方案1】:

由于您要添加的节点的唯一可变部分是 Location 属性,因此您可以非常轻松地将该过程提取到方法中,如下所示:

private XElement CreateEmployeeNode(string location)
{
    return new XElement("Employee",
        new XAttribute("Location", location),
        new XElement("Male", new XAttribute("Value", "True")),
        new XElement("Name", new XAttribute("Value", "xxx"))
    );
}

现在,当您想用新的员工数据更新现有 XML 时,您可以这样做:

var document = XDocument.Parse(xmlString); // or .Load, depending how you get XML
var newEmployeeLocation = textBox.Text;
document.Element("Emp").Add(CreateEmployeeNode(newEmployeeLocation));

新员工节点将被添加到现有节点中。

有关使用 LINQ to XML 创建 XML 树的更多信息(因为这是我们在此处处理的内容),请查看在线指南 here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-30
    • 1970-01-01
    相关资源
    最近更新 更多