に我々はpugixmlでXPathクエリ結果の行/列を取得したい:Pugixml
pugi::xpath_query query_child(query_str);
std::string value = Convert::toString(query_child.evaluate_string(root_node));
私たちは、オフセットではなく、行/列取得することができます。
をunsigned int = query_child.result().offset;
ファイルを再解析すると、offset =>(行、列)に変換できますが、効率的ではありません。
これを達成するために効率的なメソッドがありますか?
ありがとうございます、はいノードのオフセットを見つけたいと思います。 しかし、問題は再解析せずに行/列に変換する方法ですか? おそらく私はpugixmlコードを編集する必要がありますか? –
答えは - あなたはできません。 pugixmlコードを編集することはできますが、これはあまり簡単ではありません。パフォーマンス上の理由から、レクサーがないため、改行を数えることのできる場所は1つではありません。あなたの最善の策は再解析です。一回のパスを一度に再解析して、キー=改行オフセットと値=行インデックス(増加番号)のstd :: mapを作成します。 equal_rangeを使用してオフセットをrow + columnに変換することができます。 pugixmlコードを変更する必要はありません。 –
zeuxcg
サンプルコードを使って答えを更新しました。 – zeuxcg