C#从Parent移动XmlNode

时间:2016-03-30 15:33:21

标签: c# xml xml-parsing

XML是:

source

我的代码验证了id = 1的XmlNode是否重复,但是如果它存在,我想将abc5和abc6移动到RNC id = 01的第一次出现并具有以下内容:

<RNC id="00">
    <abc1>
    </abc1>
    <abc2>
    </abc2>
</RNC>
<RNC id="01" >
    <abc3>
    </abc3>
    <abc4>
    </abc4>
</RNC>
<RNC id="01">
    <abc5>
    </abc5>
    <abc6>
    </abc6>
</RNC>

如何用C#实现这一目标?我没有使用LINQ,我正在使用XmlDocument,XmlNodeList和XmlNode。

由于

3 个答案:

答案 0 :(得分:1)

浏览文档的一个功能是RandomAccessFile.c,一种用于XML文档的查询语言。 XPath代表XML Path Language。它是专门用于处理XML文档部分的语言。

1)选择所有重复的ID

您可以使用以下xpath:

XPath

//RNC[@id= following::RNC/@id and not(@id = preceding::RNC/@id)]

2)用find next node with the same id, work in one direction

迭代它们

3)将第二个RNC中的子节点添加到第一个,然后从xmlDoc中删除

SelectNodes("//RNC[@id='id']")

答案 1 :(得分:0)

我有一个带有新RNC ID的字符串,比方说ID1,所以ID2将被修改为ID1,然后我检查ID1是否按照低值重复

using(XmlNodeList RNC_LIST = xmlDoc.GetElementsByTagName("RNC"))
{
    foreach(XmlNode RNC in RNC_LIST)
    {
        if (RNC.Attributes["id"].Value == target_rnc)
        {
            /// Move the XmlNodes Here
        }
    }
}

答案 2 :(得分:0)

试试xml linq

Hi customer, we remember your appointment xx