我尝试重命名任何节点,以" 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
我为这样的问题寻找更一般和更优雅的答案。
答案 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。