重命名Xml节点

时间:2016-08-25 13:59:15

标签: c# xml replace

我尝试重命名任何节点,以" NP"到" NP"在XmlDocument中。我只找到了this related questoin。根据我写的最高投票答案:

 XmlNodeList npNodeList = PSbank.SelectNodes("//*[starts-with(name(), 'NP')]");

foreach (XmlNode npNode in npNodeList)
{

    // create new (renamed) Content node
    XmlNode newNode = PSbank.CreateElement("NP");

    // [if needed] copy existing Content children
    newNode.InnerXml = npNode.InnerXml;

    // replace existing Content node with newly renamed Content node
    npNode.ParentNode.InsertBefore(newNode, npNode);
    npNode.ParentNode.RemoveChild(npNode);
}

然而,似乎它在我的案例中并不起作用。当NPX节点包含其他NPX个节点时,不会替换内部节点,因为代码操作XmlDocument并使用包含旧{{1}的新创建节点替换外部节点}。

示例Xml:

innerXml

我为这样的问题寻找更一般和更优雅的答案。

1 个答案:

答案 0 :(得分:4)

我使用LINQ to XML执行此操作,它更容易,更清晰。首先,它通常是一个更好的库,其次:<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <button>Click me!</button> <div class="container"> <div class="boxes"></div> <div class="boxes"></div> <div class="boxes"></div> <div class="boxes"></div> <div class="boxes"></div> <div class="boxes"></div> <div class="boxes"></div> <div class="boxes"></div> <div class="boxes"></div> <div class="boxes"></div> <div class="boxes"></div> <div class="boxes"></div> <div class="boxes"></div> <div class="boxes"></div> <div class="boxes"></div> <div class="boxes"></div> <div class="boxes"></div> <div class="boxes"></div> <div class="boxes"></div> <div class="boxes"></div> <div class="boxes"></div> <div class="boxes"></div> <div class="boxes"></div> </div>是可变的。

XElement.Name

有关正常工作的演示,请参阅this fiddle