Я уже две недели безуспешно искал, как разобрать один конкретный 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, но когда я пытаюсь найти один конкретный узел, результат кода - ничто.
in
Set xmlNodeList = xmlDoc.getElementsByTagName("*")
Я пытался использовать адрес "// AttributeDescription", но, видимо, просто работаю с использованием "*".
Мне нужно получить, например, ответ ниже:
AttributeDescription = Production
CountryName = Brazil
Value = 0.00000
Я приложил все усилия, чтобы получить правильный ответ, и я также считаю, что структура XMLэто не в правильном формате из-за отсутствия ответа при обращении ...
Могу ли я что-нибудь сделать, чтобы решить эту проблему?