Итак, у меня есть этот довольно большой XML-файл (40 МБ), который мне придется многократно искать. Я изучал преимущества использования DOMDocument с XPath и думал, что все правильно, но я получаю ерунду Obj Var Not Set.
Вот начальная загрузка ... Я думаю, что это загрузка, потому что она задерживает соответствующий промежуток времени для файла 40 МБ и не возвращает ошибку.
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 для чтения проанализированного объекта xmlDoc. Я проверил справочную библиотеку MsXml 6.0, и я получаю тип var при уменьшении яркости (вы знаете, список типов, которые заполняют нас, noobs).
И после того, как у меня есть набор 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>
Спасибо ..... вы умные люди рок.