如何使用 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()
将向您展示所有内容。
然后,如何使用此结果并从中导航/选择具体项目?
XmlNode
是System.Xml
库中很多元素的基类,甚至是XmlDocument
和XmlElement
类,所以很多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