2010-09-30 84 views
1

我有一個指向XML元素的XPathNavigator對象。我想將元素重命名爲另一個名稱(並重命名關聯的結束元素)。這可以使用XPathNavigator完成嗎?使用XPathNavigator重命名元素

(我有一個變通,這是刪除的元素,並以不同的名稱重新插入,但是這可能會導致性能問題,因爲我處理非常大的文檔)

回答

1

這取決於關於你的底層XML文檔表示是什麼。如果你正在使用的XDocument你可以這樣做:

(XElement)(navigator.UnderlyingObject).Name = ... 

我不認爲這是可能的XmlDocument的(除非你的建議),或XPathDocument中。

+0

不幸的是,我的基礎文檔是一個XmlDocument的。我將堅持解決方法。謝謝。 http://stackoverflow.com/questions/847951/net-import-xmlelement-with-different-element-name – decasteljau 2010-09-30 15:58:14

1

對於對此問題感興趣的其他人,如果我正確理解問題,並且想要重命名元素節點,那麼我會發現使用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);