【发布时间】:2014-02-14 22:54:48
【问题描述】:
我正在尝试修改从 user2140261 获得的一段代码,该代码从 XML 类型(XBRL 模板)SEC EDGAR 数据库中提取数据。因此,由于我也想从其他节点中提取元素值,所以我的第一个想法是在 MsgBox 中显示带有 XML 实例节点的列表;通过使用childNodes Property。第一个小 sn-p,为了避免混淆,我做了一些小的修改,而在第二个中,我们看到了原始代码以及修改的 3 个语句
Dim Tiger As String
Tiger = objXMLNodexbrl.ChildNodes(1)
MsgBox Tiger
Sub GetNode()
Dim strXMLSite As String
Dim objXMLHTTP As MSXML2.XMLHTTP
Dim objXMLDoc As MSXML2.DOMDocument
Dim objXMLNodexbrl As MSXML2.IXMLDOMNode
Dim objXMLNodeDIIRSP As MSXML2.IXMLDOMNode
Dim Tiger As String
Set objXMLHTTP = New MSXML2.XMLHTTP
Set objXMLDoc = New MSXML2.DOMDocument
strXMLSite = "http://www.sec.gov/Archives/edgar/data/10795/000119312513456802/bdx-20130930.xml"
objXMLHTTP.Open "POST", strXMLSite, False
objXMLHTTP.send
objXMLDoc.LoadXML (objXMLHTTP.responseText)
Set objXMLNodexbrl = objXMLDoc.SelectSingleNode("xbrl")
Tiger = objXMLNodexbrl.ChildNodes(1)
MsgBox Tiger
Set objXMLNodeDIIRSP = objXMLNodexbrl.SelectSingleNode("us-gaap:DebtInstrumentInterestRateStatedPercentage")
Worksheets("Sheet1").Range("A1").Value = objXMLNodeDIIRSP.Text
End Sub
因此,当我尝试使用 F8 逐步解析代码时,我得到一个“运行时错误 438”,告诉我该对象不支持此属性或方法。
- 当实例文档中的xbrl 是根元素并且包含所有子节点时,这怎么可能?
@user2140261 哇,你说的太对了……只有一个问题我确实会更改我的代码
Tiger = objXMLNodexbrl.ChildNodes(1).Text
但我得到的是元素的数值而不是节点的数量。这怎么可能?因为 ChildNodes 属性:“包含一个包含子节点的节点列表”...
【问题讨论】: