【发布时间】:2019-10-29 04:15:01
【问题描述】:
我已经花了两周时间搜索如何解析一个特定的 XML 并只获取几个值,但没有成功。我已经尝试了互联网上的每一个代码,直到找到一个可以解决部分问题的代码。
我试图从美国农业部获取的 XML,可以免费访问。
https://apps.fas.usda.gov/psdonline/app/index.html#/app/about
Dim xmlDoc As MSXML2.DOMDocument60
Dim xmlNode As MSXML2.IXMLDOMNode
Dim xmlNodeList As MSXML2.IXMLDOMNodeList
Dim myNode As MSXML2.IXMLDOMNode
Dim URL As String, APIkey As String
APIkey = "8DB688F8-1E22-4031-B581-59C221ECDDA6"
URL = "https://apps.fas.usda.gov/PSDOnlineDataServices/api/CommodityData/GetCommodityDataByYear?commodityCode=2222000&marketYear=2018"
Set xmlDoc = New MSXML2.DOMDocument60
xmlDoc.async = False
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", URL, False
.SetRequestHeader "Accept", "text/xml"
.SetRequestHeader "API_KEY", APIkey
.Send
xmlDoc.loadXML .ResponseText
End With
Set xmlNodeList = xmlDoc.getElementsByTagName("*")
For Each xmlNode In xmlNodeList
For Each myNode In xmlNode.childNodes
If myNode.nodeType = NODE_TEXT Then
Debug.Print xmlNode.nodeName & "=" & xmlNode.text
End If
Next myNode
Next xmlNode
Set xmlDoc = Nothing
End Sub
此代码的响应显示列出的整个 XML,但是当我尝试查找一个特定节点时,代码结果什么都没有。
在
Set xmlNodeList = xmlDoc.getElementsByTagName("*")
我尝试使用地址“//AttributeDescription”,但显然只能使用“*”。
例如,我需要收到以下响应:
AttributeDescription=生产
CountryName=巴西
值=0.00000
我尽了最大努力获得正确的响应,我还认为 XML 结构的格式不正确,因为在寻址时缺少响应...
有什么办法可以解决这个问题吗?
【问题讨论】: