我有一個指向XML元素的XPathNavigator對象。我想將元素重命名爲另一個名稱(並重命名關聯的結束元素)。這可以使用XPathNavigator完成嗎?使用XPathNavigator重命名元素
(我有一個變通,這是刪除的元素,並以不同的名稱重新插入,但是這可能會導致性能問題,因爲我處理非常大的文檔)
我有一個指向XML元素的XPathNavigator對象。我想將元素重命名爲另一個名稱(並重命名關聯的結束元素)。這可以使用XPathNavigator完成嗎?使用XPathNavigator重命名元素
(我有一個變通,這是刪除的元素,並以不同的名稱重新插入,但是這可能會導致性能問題,因爲我處理非常大的文檔)
這取決於關於你的底層XML文檔表示是什麼。如果你正在使用的XDocument你可以這樣做:
(XElement)(navigator.UnderlyingObject).Name = ...
我不認爲這是可能的XmlDocument的(除非你的建議),或XPathDocument中。
對於對此問題感興趣的其他人,如果我正確理解問題,並且想要重命名元素節點,那麼我會發現使用ReplaceSelf從XPathNavigator中很容易實現。我使用.Net框架版本4.0,但這看起來好像已經有一段時間了。
(快速的C#示例)
XmlDocument reportServerDocument = new XmlDocument();
reportServerDocument.Load("C:\Path\to\ReportServer\rsreportserver.config");
XPathNavigator reportServerDocumentNavigator =
reportServerDocument.CreateNavigator();
XPathNavigator authenticationTypesNode =
reportServerDocumentNavigator.SelectSingleNode(
"//Authentication/AuthenticationTypes/RSWindowsNegotiate");
authenticationTypesNode.ReplaceSelf("<Custom/>");
reportServerDocument.Save("C:\Path\to\ReportServer\rsreportserver.config");
log.Info("Updated the AuthenticationTypes: " +
authenticationTypesNode.OuterXml);
不幸的是,我的基礎文檔是一個XmlDocument的。我將堅持解決方法。謝謝。 http://stackoverflow.com/questions/847951/net-import-xmlelement-with-different-element-name – decasteljau 2010-09-30 15:58:14