【发布时间】:2020-07-13 23:11:31
【问题描述】:
所以我有一个非常大的 XML 文件 (40MB),我必须反复搜索。我受过关于使用 XPath 使用 DOMDocument 的好处的教育,我认为我做对了,但我得到了 Obj Var Not Set 的废话。
这是初始加载...我认为它的加载是因为它会延迟 40mb 文件的适当时间长度并且不返回错误。
Dim someElement As IXMLDOMNode
Dim xmlDoc As Object
Set xmlDoc = CreateObject("Msxml2.DOMDocument.6.0")
'<-thats a valid file name lookup
xmlDoc.Load DLookup("gsgtver", "Eramdat", "EramID = 1")
所以这就是它变得冒险的地方。我需要一个 IXMLDOMNode 来读取 parced xmlDoc 对象。我检查了 MsXml 6.0 参考库,当我变暗时我得到了 var 类型(你知道,为我们新手填写的类型列表)。 在我设置了 IXMLDOMNode 后,当我尝试分配时,我得到了方法列表(如“.text”),但我正在解决这个错误.....可能是一个 bum xpath 字符串(虽然我几乎逐字从 xpath 教程中偷来的)。
sNodeName = "/Fix_Records/FixRecord/FixID[1]/Latitude"
Set someElement = xmlDoc.SelectSingleNode(sNodeName)
'yes, I dimmed xBuffer as a string up above
sBuffer = someElement.text
顺便说一句,我真的很想做一个“FixID = 'mystring'”之类的事情,但我正在做元素 1 只是为了让它工作。 这是 xml 文件的顶部:
<Fix_Records xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="Fix.xsd">
<!-- ******************************************************** -->
<!-- Local SITE ID : ZAB -->
<!-- Local Release Version: a082a210 -->
<!-- NASD/NADR Version : z084b210 -->
<!-- Date : 02-03-2011 19:02:56 -->
<!-- ******************************************************** -->
<FixRecord>
<FixId>00BTR</FixId>
<IcaoCode>K7</IcaoCode>
<FixType>WAYPOINT</FixType>
<FixName>BTR055100</FixName>
<FixinUs>true</FixinUs>
<IsNational>true</IsNational>
<HighPowerVor>false</HighPowerVor>
<DPositionMapData>false</DPositionMapData>
<Latitude>31170205N</Latitude>
<Longitude>089353453W</Longitude>
<AngularCorr>-0.010472</AngularCorr>
<XSpherical>0.006082693951808</XSpherical>
<YSpherical>-0.85612436871425</YSpherical>
<ZSpherical>0.516734038096893</ZSpherical>
</FixRecord>
<FixRecord>
<FixId>00N10</FixId>
<IcaoCode>MM</IcaoCode>
谢谢......你们这些聪明的人摇滚。
【问题讨论】: