【问题标题】:Rename an element using XPathNavigator使用 XPathNavigator 重命名元素
【发布时间】:2010-09-30 14:56:31
【问题描述】:

我有一个指向 XML 元素的 XPathNavigator 对象。我想将元素重命名为另一个名称(并重命名关联的结束元素)。这可以使用 XPathNavigator 完成吗?

(我有一个解决方法,即删除元素并以不同的名称重新插入,但这可能会导致性能问题,因为我正在处理非常大的文档)

【问题讨论】:

    标签: c# .net xml xpathnavigator


    【解决方案1】:

    这取决于您的底层 XML 文档表示是什么。如果您使用的是 XDocument,您可以这样做:

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

    我认为 XmlDocument(除非您建议)或 XPathDocument 是不可能的。

    【讨论】:

    【解决方案2】:

    对于其他对此问题感兴趣的人,如果我正确理解了这个问题,并且您想要重命名元素节点,那么我发现使用 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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-19
      • 2021-03-14
      • 1970-01-01
      相关资源
      最近更新 更多