如何从Soap Web响应中获取元素数据?VB.NET
我试图从一个Web服务获取数据,只返回一个结果,即给定库存商品的数量 我正在成功获得一个结果,但需要从中删除所有XML代码以简单地返回数字,返回的XML如下所示:如何从Soap Web响应中获取元素数据?VB.NET,vb.net,soap,xml-parsing,Vb.net,Soap,Xml Parsing,我试图从一个Web服务获取数据,只返回一个结果,即给定库存商品的数量 我正在成功获得一个结果,但需要从中删除所有XML代码以简单地返回数字,返回的XML如下所示: <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<stockenquiryResponse xmlns="https://webservices.electrovision.co.uk">
<stockenquiryResult>**THE NUMBER I NEED**</stockenquiryResult>
</stockenquiryResponse>
</soap:Body>
</soap:Envelope>
**我需要的号码**
我确信这已经被问过很多次了,但是我找不到一个简单的解决方案,仅仅从stockinquiryresult
标记中获取值
似乎是正确的答案,但我无法让它发挥作用
如果有帮助,我将使用以下示例获取数据:
只需几处调整即可正确获取数据,最显著的是将内容类型更改为application/soap+xml
,并将数据作为xml传递
我将VB与ASP.NET 2.0结合使用。有一些内置的.NET类可用于读取XML 使用XmlDocument XmlDocument在DOM(文档对象模型)中公开从web服务检索到的XML字符串。您可以在上阅读关于XmlDocument的内容 如果选择使用SelectSingleNode,则会很方便 使用XmlReader 对于像读取一个标记一样快的内容,您还可以使用XmlReader(.与XmlDocument不同,XmlReader不会将XML公开为DOM。XmlReader是一个仅向前的读取器,但应该比XmlDocument更快、更轻量。这对于像您这样的情况非常适用
Dim XSettings as new XmlReaderSettings
'You can use XSettings to set specific settings on the XmlReader below.
'See linked docs.
Using SReader as New StringReader(XMLString)
Dim X as XmlReader = XmlReader.Create(SReader, XSettings)
X.ReadToDescendant("stockenquiryResult")
Dim Result as string = X.ReadElementContentAsString
End Using
有一些内置的.NET类可用于读取XML 使用XmlDocument XmlDocument在DOM(文档对象模型)中公开从web服务检索到的XML字符串。您可以在上阅读有关XmlDocument的内容 如果选择使用SelectSingleNode,则会很方便 使用XmlReader 对于像读取一个标记一样快的内容,您还可以使用XmlReader(.与XmlDocument不同,XmlReader不会将XML公开为DOM。XmlReader是一个仅向前的读取器,但应该比XmlDocument更快、更轻量。这对于像您这样的情况非常适用
Dim XSettings as new XmlReaderSettings
'You can use XSettings to set specific settings on the XmlReader below.
'See linked docs.
Using SReader as New StringReader(XMLString)
Dim X as XmlReader = XmlReader.Create(SReader, XSettings)
X.ReadToDescendant("stockenquiryResult")
Dim Result as string = X.ReadElementContentAsString
End Using
谢谢,但我似乎无法做到这一点。我昨天一直在写这行,但总是得到
对象引用未设置为对象的实例。
当尝试使用SelectSingleNode
抱歉,我忘了SelectSingleNode需要XPath表达式。我为XmlDocument提供的原始代码只是使用了element名称而不是所需的XPath表达式,这就是您收到错误的原因。如果您不熟悉XPath,这可能会很棘手。我已将XmlDocument的答案更新为使用LastChild而不是SelectSingleNode。如果您确定要检索的元素将始终是最后一个子元素,这将正常工作。如果不熟悉,则为y您可能会遇到麻烦,无法找到与SelectSingleNode一起使用的正确XPath表达式。我不太熟悉XML fullstop!!谢谢,使用您的第一个示例,现在一切都很好!!谢谢,但我似乎无法实现这一点。我昨天一直在写这行,但总是得到对象引用未设置为对象的实例。
当尝试使用SelectSingleNode
抱歉,我忘记了SelectSingleNode需要XPath表达式。我为XmlDocument提供的原始代码只是使用元素名称而不是所需的XPath表达式,这就是为什么您收到错误的原因。如果您不熟悉XPath,则不能ricky。我更新了XmlDocument的答案,使用LastChild而不是SelectSingleNode。如果您确定要检索的元素始终是最后一个子元素,这将正常工作。如果不确定,您可能会遇到麻烦,无法找到正确的XPath表达式来使用SelectSingleNode。我对XML fullstop不是很熟悉!!T汉克斯,用你的第一个例子,现在一切都很顺利!!