1

我正在尝试从 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>

我敢肯定这已经被问过很多次了,但是我找不到一个简单的解决方案来从stockenquiryresult标签中获取值。

从 vbnet 中的 XML 获取值

似乎是正确的答案,但我无法让它工作。

如果有帮助,我将使用以下示例获取数据:

http://msdn.microsoft.com/en-us/library/debx8sh9(v=vs.80).aspx

只需进行一些调整即可正确获取数据,最值得注意的是将内容类型更改application/soap+xml为 XML 并将数据作为 XML 传递。

我正在使用带有 ASP.NET 2.0 的 VB。

4

1 回答 1

5

有一些内置的 .NET 类可用于读取 XML。

使用 XmlDocument

XmlDocument 在 DOM(文档对象模型)中公开您从 Web 服务检索到的 XML 字符串。您可以在MSDN上阅读有关 XmlDocument 的信息。

Dim XMLDoc as new XMLDocument

XMLDoc.LoadXML(XMLString)

Dim Result as string = XMLDoc.LastChild.InnerText

'Alternatively, you can use SelectSingleNode.
'You will need to determine the correct XPath expression.
'Dim Result as string = XMLDoc.SelectSingleNode("XPathToNode").InnerText

如果您选择使用 SelectSingleNode,那么MSDN 上的 XPath 文档将会派上用场。

使用 XmlReader

对于像阅读一个标签一样快的事情,您还可以使用 XmlReader(MSDN 文档)。与 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
于 2012-06-01T19:50:00.757 回答