C#XML - 将属性复制到子元素

时间:2010-10-20 09:57:27

标签: c#

例如,我有一个XML结构,如下:

<element1>
  <element 2 name = "Blah" value = "Something">
    <element 3 name = "Blah" type = "Something">
    <element 3 name = "Woo" type = "Wibble">
      <element 4 name = "Hello">
      <element 4 name = "Goodbye">
      </element4>
    </element3>
  <element2>
</element1>

仅粗糙结构指南。不,我怎么会在C#中编写一个复制元素2中的value属性并将其放在元素3的每个实例中的应用程序,但前提是它有一个元素4子元素?

对于要求举例的评论者:

我希望循环遍历XML文档,并且对于包含element4子元素的element3的每个实例,我希望复制该element3的element2 parent中的'value'属性,并将其添加到该元素的属性列表中3.如果这是有道理的:\

1 个答案:

答案 0 :(得分:3)

好吧,我会:

  • 将XML加载到XDocument
  • 使用<element2>doc.Descendants("element2").First()
  • 查找doc.Root.Element("element2")
  • 找到您要复制的属性值,例如string value = (string) element.Attribute("value");
  • 使用<element3>
  • 对所有doc.Root.Elements("element3")元素进行迭代
  • <element3>
  • 的孩子测试每个element.Element("element4") != null
  • 在任何适当的元素上调用element.SetAttributeValue("value", value")