1

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

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

4

2 回答 2

1

这取决于您的底层 XML 文档表示是什么。如果您使用的是 XDocument,您可以执行以下操作:

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

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

于 2010-09-30T15:33:45.590 回答
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);
于 2013-04-25T01:05:57.160 回答