2010-09-30 4 views
1

J'ai un objet XPathNavigator pointant vers un élément XML. Je veux renommer l'élément en un autre nom (et renommer aussi l'élément final associé). Est-ce que cela peut être fait en utilisant XPathNavigator?Renommer un élément à l'aide de XPathNavigator

(j'ai un travail autour, ce qui est de supprimer l'élément et ré-insérer sous un autre nom, mais cela pourrait entraîner un problème de performance, parce que je suis le traitement des documents très importants)

Répondre

1

Cela dépend sur la représentation de votre document XML sous-jacent. Si vous utilisez XDocument que vous pouvez faire:

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

Je ne pense pas qu'il est possible avec XmlDocument (sauf que vous proposez), ou XPathDocument.

+0

Malheureusement, mon document sous-jacent est un XmlDocument. Je vais rester avec la solution de contournement. Je vous remercie. http://stackoverflow.com/questions/847951/net-import-xmlelement-with-different-element-name – decasteljau

1

Pour tous ceux qui s'intéressent à cette question, et si je comprends bien la question, et que vous voulez renommer un nœud d'élément, alors je vois que XPathNavigator est très facile à utiliser avec ReplaceSelf. J'utilise la version 4.0 du framework .Net, mais ça a l'air d'être là depuis longtemps.

(exemple rapide 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); 
Questions connexes