Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Soap Web响应中获取元素数据?VB.NET_Vb.net_Soap_Xml Parsing - Fatal编程技术网

如何从Soap Web响应中获取元素数据?VB.NET

如何从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:

我试图从一个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: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汉克斯,用你的第一个例子,现在一切都很顺利!!