【问题标题】:Convert XmlDocument object into an XmlNode object - C#?将 XmlDocument 对象转换为 XmlNode 对象 - C#?
【发布时间】:2011-01-23 21:07:31
【问题描述】:

如何在 C# 中将 XmlDocument 转换为 XmlNode?我需要将整个 XmlDocument 对象作为输入参数发送到 .NET Web 服务。

【问题讨论】:

  • 在 .NET Framework 中定义的复杂类型对于 Web 服务的参数来说似乎是一个糟糕的选择。如果该服务是您的,您可能会考虑将类型更改为字符串。这也可以让您相对轻松地从其他语言/平台调用它。
  • @TrueWill - 该服务不是我的,它是第三方供应商服务。

标签: c# xmldocument xmlnode


【解决方案1】:

XmlDocument 是一个 XmlNode,因此您可以只传递文档对象。

或者您可以发送它的 DocumentElement,或者从 XPath 查询返回的任何节点。

XmlDocument doc = null;
XmlNode node = doc;

XmlNode node = doc.DocumentElement;

XmlNode node = doc.SelectSingleNode("/foo/bar");

不需要转换或转换,除非您需要从 XmlDocument 中消除 XmlNode 的歧义,以获取具有两种参数类型重载的方法。如果是这种情况,请使用强制转换或 as 运算符。

【讨论】:

    【解决方案2】:

    如果您需要明确地将其称为 XmlNode,请使用“as”:

    XmlDocument doc = ...
    
    XmlNode node = doc as XmlNode;
    

    【讨论】:

      【解决方案3】:

      XmlDocument 派生自 XmlNode,但您也可以发送 XmlDocument.DocumentElement,它是一个 XmlElement,但最终派生自 XmlNode。您可能需要签入 XmlDocument.DocumentElement == null。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-12-08
        • 2016-04-24
        • 1970-01-01
        • 2021-03-10
        • 2022-01-18
        • 2011-05-26
        • 2013-11-02
        • 1970-01-01
        相关资源
        最近更新 更多