XMLファイルには、以下のような数千のノードが含まれている可能性があります。XMLファイル内のノードを最も効率的に見つける方法(C++)
<?xml version="1.0" encoding="utf-8"?>
<root>
<node>
<id>0</id>
<value>data</value>
</node>
<node>
<id>1</id>
<value>data</value>
</node>
<node>
<id>2</id>
<value>data</value>
</node>
</<root>
各ノードは互いに重複し、おそらくそれらの間にギャップが存在しないことを保証し、その「ID」を有します。 私の質問は、ノードのIDを使用して特定のノードを検索するためにブーストを使用することによって、最も効率的な方法は何ですか?
ありがとうございました。
UPDATE これは、私はアイテムが効率的である見つけるために、ファイル全体をスキャンするとは思わない私は
property_tree::wptree ptree; // has been loaded somewhere
auto nodes = ptree.get_child(L"root");
bool bFound = false;
for (auto& itr : nodes)
{
auto & rec = itr.second;
int id = rec.get<int>(L"id", -1);
if (id == nodeId)
{
bFound = true;
// found it
// get other values
break;
}
}
を行った方法です。
あなたがこれまでに(C++コード)しようとしているものを投稿して説明してくださいなぜそれが「効率的」でないのか。 –
@ジムガリソンもちろん、ここで質問を投稿する前に私はそれをしました。誰かが自分の質問に自明なことを見せなかっただけなので、投票する必要はありません。 –
XMLのサイズによっては、選択肢がない場合があります。例えば。私たちの場所では、マルチギガバイトのXMLに遭遇し、それらをすべてメモリに保持する余裕はありません。 – sehe