1

Web サービスからデータを取得しようとしていますが、特定の商品の在庫数という結果を 1 つだけ返します。

正常に結果を取得していますが、すべての 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 として渡すだけで済みます。

ASP.NET 2.0 で VB を使用しています。

4

1 に答える 1

5

XML の読み取りに使用できる組み込みの .NET クラスがいくつかあります。

XmlDocument の使用

XmlDocument は、Web サービスから取得した XML 文字列を DOM (Document Object Model) で公開します。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 の使用

1 つのタグをすばやく読み取るには、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 に答える