かなり大きな XML ファイル (~11MB) があり、TinyXPath を使用していくつかのノードを見つけています。私が見つけようとしているノードは、DOM 内の他のノードと混同できないという事実にもかかわらず、XPath クエリが返されるまでに数分かかります。
これが私のサンプル XML です。
<RootElement>
<Header>
<Location>1234</Location>
... maybe a dozen sibling nodes
</Header>
<EventReport>
<SomeEvent>with a few dozen child nodes</SomeEvent>
... 2,000+ SomeEvent nodes
</EventReport>
</RootElement>
そして、ここに私のC++コードがあります:
TiXmlDocument doc;
doc.LoadFile("C:\\Path\\To\\file.xml");
TiXmlNode *locationNode = TinyXPath::XNp_xpath_node(doc.RootElement(), "//RootElement/Header/Location");
スタック トレースを一時停止して調べると、XML 構造全体を解析してトラバースしようとしているように見えます。ただし、RootElement
子ノードはHeader
との 2 つだけEventReport
です。そして、(非常に大きな) ノードの下で何も探していないので、EventReport
このクエリが非常に高速であることを願っています。
また、サンプル XML を縮小していくつかのSomeEvent
ノードのみを含めると、このクエリはほぼ瞬時に返されます。
これは TinyXPath の既知の制限ですか? タイムリーに返されるようにクエリを構成するより良い方法はありますか?