使用 XPathNavigator 重命名元素

发布于 2024-09-25 21:57:14 字数 159 浏览 2 评论 0原文

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

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

I have an XPathNavigator object pointing to an XML element. I want to rename the element to another name (and also rename the associated end element). Can this be done using the XPathNavigator?

(I have a work-around, which is to Delete the element and re-insert it under a different name, but this may cause a performance issue, because I am handling very large documents)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

她如夕阳 2024-10-02 21:57:14

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

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

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

It depends on what your underlying XML document representation is. If you are using XDocument you can do:

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

I don't think it is possible with XmlDocument (except as you suggest), or XPathDocument.

骄傲 2024-10-02 21:57:14

对于对这个问题感兴趣的其他人,如果我正确理解了这个问题,并且您想要重命名元素节点,那么我发现使用 ReplaceSelf 从 XPathNavigator 可以轻松实现这一点。我正在使用 .Net Framework 版本 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);

For anyone else interested in this question, and if I understand the question correctly, and you want to rename an element node, then I see that it's very easily doable from XPathNavigator using ReplaceSelf. I'm using .Net framework version 4.0, but this looks like it's been around for a while.

(quick C# example)

    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);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文