如何解决使用MSXML2进行xml解析的问题:当应列出十个不同的节点时,将重复一个第一个节点
标题中提到的问题发生在使用selectSingleNodes时。我相信这与方法的xPath有关。我在下面的代码中用“
在这里A行中,我尝试了xnode.SelectSingleNode(“ corp_name”)。这根本没有任何节点。使用“ / corp_name”,也完全没有节点。但是在使用“ // corp_name”的当前代码中,找到了10个节点。
在A行为“ // corp_name”的情况下,如果在HERE B行中使用“ corp_name”和“ / corp_name”,则会发生运行时错误。因此,我也不得不在B行中使用“ // corp_name”。但是,随后出现了标题问题。在10个节点中,仅第一个节点重复。因为方法本身返回第一个节点,所以这似乎是合乎逻辑的。但是,如何提取所有不同的节点呢?我希望循环能够处理每个节点。但是显然,它不是,否则...这是我从Internet复制的代码中所不了解的。
我的测试选项似乎耗尽了。实际上,这是我第一次尝试使用API,XML和MSXML2,这意味着我在使用某些内容时可能并不完全了解。因此,如果你们中的任何一个指出可能被滥用的东西,那将是一个很大的帮助。
请帮助!
==================
sub extract_corpname_receptno()
将xml_obj昏暗为MSXML2.XMLHTTP60 设置xml_obj = New MSXML2.XMLHTTP60
base_url = "https://opendart.fss.or.kr/api/list.xml?"
param_api = "&crtfc_key="
param_api_value = CStr(Worksheets("sheet2").Range("k1").Value)
api_url = base_url + _
param_api + param_api_value
xml_obj.Open bstrMethod:="GET",bstrURL:=api_url
xml_obj.send
Debug.Print "The Request was " + xml_obj.statusText
Debug.Print xml_obj.responseText
Dim xDoc As MSXML2.DOMDocument60
Dim xNodes As MSXML2.IXMLDOMNodeList
Dim xnode As MSXML2.IXMLDOMNode
Set xDoc = New MSXML2.DOMDocument60
xDoc.LoadXML (xml_obj.responseText)
If Not xDoc.LoadXML(xml_obj.responseText) Then
MsgBox "load error"
End If
Set xNodes = xDoc.SelectNodes("//corp_name") '<===== HERE A
Debug.Print xNodes.Length
Dim xChlNode As IXMLDOMNodeList
Set xChlNode = xDoc.ChildNodes.Item(1).ChildNodes
For Each xChl In xChlNode
Debug.Print xChl.BaseName
Debug.Print xChl.NodeType
Next
For Each xnode In xNodes
Debug.Print "----------------------------------"
'Debug.Print xnode.Text
Debug.Print xnode.SelectSingleNode("//corp_name").Text '<===== HERE B
Debug.Print xnode.SelectSingleNode("//rcept_no").Text '<===== HERE C
Next
Dim wrksht As Worksheet
Set wrksht = ThisWorkbook.Worksheets("Sheet2")
Count = 1
For Each xnode In xNodes
wrksht.Cells(Count,1).Value = xnode.SelectSingleNode("//corp_name").Text '<=== HERE B
wrksht.Cells(Count,2).Value = xnode.SelectSingleNode("//rcept_no").Text '<=== HERE C
Count = Count + 1
Next
结束子
==================
我要解析的XML具有以下结构:
<list>
<corp_name>AAA</corp_name>
<rcept_no>111</rcept_no>
</list>
<list>
<corp_name>BBB</corp_name>
<rcept_no>222</rcept_no>
</list>
.....
<list>
<corp_name>JJJ</corp_name>
<rcept_no>ten</rcept_no>
</list>
==============================
上面的代码仅给出
AAA 111
AAA 111
AAA 111 .... ....
AAA 111
何时应该给予
AAA 111
BBB 222
CCC 333 .... ....
JJJ十
==================
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。