首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在VBA中解析XML响应数据

在VBA中解析XML响应数据
EN

Stack Overflow用户
提问于 2013-05-30 23:35:15
回答 1查看 6.2K关注 0票数 3

我正在调用股票报价try服务并尝试解析返回的数据,但我尝试的结果都不起作用。

代码语言:javascript
复制
Set objHTTP = CreateObject("Microsoft.XMLHTTP")
objHTTP.Open "GET", "http://www.webservicex.net/stockquote.asmx/GetQuote?symbol=AAPL", False
objHTTP.send


Dim xDoc As MSXML2.DOMDocument
Dim xDoc2 As MSXML2.IXMLDOMNodeList

Set xDoc = New MSXML2.DOMDocument
        xDoc.LoadXML (objHTTP.responseXML.XML)

我知道到目前为止一切正常,我可以查看调试器中的Xdoc对象,并看到xml已加载。

在此之后如何访问单个节点?示例xml如下所示的"<string xmlns="http://www.webserviceX.NET/"><StockQuotes><Stock><Symbol>AAPL</Symbol><Last>446.5345</Last> <Date>5/30/2013</Date><Time>10:55am</Time><Change>+1.5845</Change></Stock></StockQuotes></string>"

EN

回答 1

Stack Overflow用户

发布于 2013-05-31 00:40:01

响应似乎是一个带有一个根元素的XML文档,该根元素包含一个转义的XML文档:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://www.webserviceX.NET/">&lt;StockQuotes&gt;&lt;Stock&gt;&lt;Symbol&gt;AAPL&lt;/Symbol&gt;&lt;Last&gt;448.9501&lt;/Last&gt;&lt;Date&gt;5/30/2013&lt;/Date&gt;&lt;Time&gt;12:17pm&lt;/Time&gt;&lt;Change&gt;+4.0001&lt;/Change&gt;&lt;Open&gt;445.65&lt;/Open&gt;&lt;High&gt;449.77&lt;/High&gt;&lt;Low&gt;444.51&lt;/Low&gt;&lt;Volume&gt;5691335&lt;/Volume&gt;&lt;MktCap&gt;421.4B&lt;/MktCap&gt;&lt;PreviousClose&gt;444.95&lt;/PreviousClose&gt;&lt;PercentageChange&gt;+0.90%&lt;/PercentageChange&gt;&lt;AnnRange&gt;385.10 - 705.07&lt;/AnnRange&gt;&lt;Earns&gt;41.896&lt;/Earns&gt;&lt;P-E&gt;10.62&lt;/P-E&gt;&lt;Name&gt;Apple Inc.&lt;/Name&gt;&lt;/Stock&gt;&lt;/StockQuotes&gt;</string>

因此,您需要加载第一个文档,然后访问其内容,并将其解析为包含第二个文档的XML:

代码语言:javascript
复制
Dim doc1 As MSXML2.DOMDocument60
Set doc1 = New MSXML2.DOMDocument60
doc1.async = False
If doc1.load("http://www.webservicex.net/stockquote.asmx/GetQuote?symbol=AAPL") Then
  Dim doc2 As MSXML2.DOMDocument60
  Set doc2 = New MSXML2.DOMDocument60
  If doc2.loadXML(doc1.DocumentElement.text) Then
    Dim value
    value = doc2.selectSingleNode("//Last").text
  Else
    'handle doc2.parseError here
  End If
Else
  ' handle doc1.parseError her
End If

未经测试,但应该会给您一个想法。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16840275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档