如何使用 XmlNode() 作为 VB.NET 中 web 服务的结果?

Posted

技术标签:

【中文标题】如何使用 XmlNode() 作为 VB.NET 中 web 服务的结果?【英文标题】:How to use XmlNode() as result from webservice in VB.NET? 【发布时间】:2018-12-28 00:48:18 【问题描述】:

Web 服务只返回 XmlNode():

Dim nodes() As XmlNode = CType(result.handler, XmlNode())

首先,这个结果如何被视为纯 xml(在 Visual Studio 中)?

然后,如何使用此结果并从中导航/选择具体项目?

【问题讨论】:

1.这个结果怎么能被视为纯 xml(在 Visual Studio 中)?:你的意思是在调试时喜欢吗?如果您只是将鼠标指针停在变量上,您可以查看其内容! 2。如何使用这个结果并从中导航/选择具体项目?:你有代表这个结果内容的类吗?如果是这样,您可以将 XmlNode 反序列化到您的对象中,我认为这是最简单的方法,否则您可以使用 Xml 库来浏览它。请提供更多关于您真正想要的信息。 1.在这种情况下,我不是指调试器。查看嵌套对象时它让我发疯;)我想像查看 dom 文档一样查看整个 xml 结构。寻找类似 $nodesArray->toXmlString() 的东西 2. 目前没有目标类。必须使用 Xml 库,但是当没有 XmlDocument 而只有 XmlNodes() 时使用什么? 因为 is 是一个数组,您必须一次转换数组中的一项。所以我通常使用类似这样的字符串 xml = string.Join("\n", nodes.Select(x => x.ToString())); 【参考方案1】:

首先,如何将这个结果视为纯 xml(在 Visual Studio 中)?

您可以使用XmlNode.WriteTo(XmlWriter) 方法,使用为写入@​​987654334@ 对象(documentation)而创建的XmlWriter 对象,例如:

Imports System.Text
Imports System.Xml

'[...]
Public Function NodesToString(nodes() As XmlNode) As String

   Dim sb As New StringBuilder()

   Dim settings As New XmlWriterSettings()
   settings.ConformanceLevel = ConformanceLevel.Fragment
   settings.Indent = True

   Dim writer = XmlWriter.Create(sb, settings)
   For Each node In nodes
      node.WriteTo(writer)
   Next
   writer.Close()

   Return sb.ToString()

End Function

之后,您的节点的所有内容都应该在您的 StringBuilder 对象上,一个简单的 sb.ToString() 将向您展示所有内容。

然后,如何使用此结果并从中导航/选择具体项目?

XmlNodeSystem.Xml 库中很多元素的基类,甚至是XmlDocumentXmlElement 类,所以很多XML“导航能力”都在那里。

如文档所述:

此类实现 W3C 文档对象模型 (DOM) 级别 1 核心和核心 DOM 级别 2。DOM 是 XML 文档的内存(缓存)树表示。 XmlNode 是 DOM 的 .NET 实现中的基类。它支持 XPath 选择并提供编辑功能。 XmlDocument 类扩展 XmlNode 并表示一个 XML 文档。您可以使用XmlDocument 来加载和保存 XML 数据。它还包括创建节点的方法。请参阅XML Document Object Model (DOM) 了解更多信息。

您可以使用这些属性或方法来浏览您的 XML 节点,例如:

XmlNode.FirstChild财产 XmlNode.NextSibling财产 XmlNode.CreateNavigator()方法 XmlNode.SelectNodes() 方法(使用 XPath 表达式) XmlNode.SelectSingleNode() 方法(使用 XPath 表达式)

【讨论】:

以上是关于如何使用 XmlNode() 作为 VB.NET 中 web 服务的结果?的主要内容,如果未能解决你的问题,请参考以下文章

带有MS访问数据库作为后端的VB.NET如何通过将数据库文件放入AppData文件夹进行部署?

如何将颜色格式应用于 Richtextbox *作为用户类型*(VB.Net)

如何使用 VB.Net 自动化 Microfocus Rumba

如何在 VB NET 中将方法名称作为过程的参数传递

Web 服务返回的 XmlDocument 作为 XmlNode,那么 XPath 不起作用?

如何在 VB.NET 中使用 OleDbDataReader 搜索数据?