0

かなり大きな 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 の既知の制限ですか? タイムリーに返されるようにクエリを構成するより良い方法はありますか?

4

1 に答える 1