使用linq将xml子元素添加到C#中的特定父节点

时间:2012-03-19 22:43:04

标签: c# xml linq

我有一个像这样的xml:

<Equipment>
     <ModificationDate>
             <Data>
             </Data> 
     </ModificationDate>
</Equipment>

我需要将此序列添加到数据节点:

<Table>
       <Name />
       <Value />
       <Number />
</Table>

问题是我需要在Data节点中添加许多Table节点。如果iot只有一个我现在就完成了它。

每当我尝试添加1个表节点及其元素时,我会正确地执行第一个节点,但是当我尝试对较新的节点执行相同操作时,我会创建表节点,但其元素都会转到第一个表节点,其他人空着。

这就是为什么我想知道这里是否有人知道如何添加新的Table节点并使用Tabel索引添加元素。

或者任何其他方式,我需要做的就是将元素添加到我想要的特定表节点,请记住它们都是相同的结构并保持相同的名称。

我搜索了高低,但没有得到答案

修改

我会试着更好地解释一下。我有第一个xml,我需要将第二个结构添加到数据字段。问题是第二个结构将在Data内部重复约500次。

我可以添加那500个表...但是当我尝试将每个数字/值/名称添加到其相应的表时,它不起作用。我只能在创建的第一个表中添加数字/值/名称。这就是为什么,在某种程度上我需要单独访问每个表并向其添加元素,因此它将保留该结构。最终的xml看起来应该是这样的:

<Equipment>
     <ModificationDate>
             <Data>
                  <Table>
                       <Name />
                       <Value />
                       <Number />
                  </Table>
                  <Table>
                       <Name />
                       <Value />
                       <Number />
                  </Table>
                  <Table>
                       <Name />
                       <Value />
                       <Number />
                  </Table>
             </Data> 
     </ModificationDate>
</Equipment>

但最终看起来像这样:

<Equipment>
     <ModificationDate>
             <Data>
                  <Table>
                       <Name />
                       <Value />
                       <Number />
                       <Name />
                       <Value />
                       <Number />
                       <Name />
                       <Value />
                       <Number />
                  </Table>
                  <Table />
                  <Table />
             </Data> 
     </ModificationDate>
</Equipment>

请帮帮我。

1 个答案:

答案 0 :(得分:3)

它不是完全清除您需要的内容,但您始终可以使用它来通过索引获取表元素:

var table = doc.Root                         // Equipment
               .Element("ModificationData")  // ModificationData
               .Element("Data")              // Data
               .Elements("Table")
               .ElementAt(index);

// Now add to that element

另一方面,如果您为每个名称/值/数字添加一个新的表节点,我不明白为什么您需要通过索引访问它们...