如果重复节点,则从xml文件获取唯一节点

时间:2017-04-28 08:53:19

标签: c# xml xmldocument

<TestCase name="TestCase2" UID="8eb5d202-1559-47b3-b39e-21e46d0bc9d2" State="Checked" DataSourceId="">
    <TestModule name="Recording1" State="Checked" UID="2">
    </TestModule>
    <TestModule name="Recording1" State="Checked" UID="2">
    </TestModule>
    <TestModule name="Recording1" State="Checked" UID="2">
    </TestModule>
  </TestCase>

在上面的xml中,我有多个具有相同名称和UID的节点,需要在第二个和第三个节点之间插入第一个节点,但由于l_NodeToAppend和l_targetNode是相同的,因此如果节点重复,我应该如何识别节点。

XmlNode l_NodeToAppend = null;
foreach (XmlNode i in e.SourceModels)
{
    l_NodeToAppend = xDoc.SelectSingleNode(string.Format("//TestModule[@UID='{0}']", i.Attributes["UID"].Value));
    if (l_NodeToAppend != null)
        break;
}

XmlNode l_targetNode = xDoc.SelectSingleNode(string.Format("//TestModule[@UID='{0}']", e.TargetModel.Attributes["UID"].Value));

l_targetNode.ParentNode.InsertBefore(l_NodeToAppend, l_targetNode);

1 个答案:

答案 0 :(得分:0)

l_NodeToAppend将是UID的第一个。 选择最后一个相同的UID对你有好处吗?

XmlNode l_targetNode = xDoc.SelectSingleNode(string.Format("//TestModule[@UID='{0}'][last()]", e.TargetModel.Attributes["UID"].Value));