TinyXPath ライブラリと TinyXml を使用して次の xml を解析する Ubuntu でプロジェクトを構築しています。
<nodes>
<node attribute1="1" attribute2="2" />
<node attribute1="2" attribute2="3" />
...
<node attribute1="10" attribute2="11" />
</nodes>
含まれているノード エントリの数を調べるために、以下を使用しています。
TinyXPath::i_xpath_int( xml_root,"count(/nodes/node)")
どうやら、この関数呼び出しを 1 つのオブジェクトで使用すると、実際のノード数である 10 が返されます。しかし、別のオブジェクト (別のクラス タイプ) で使用すると、常に 0 が返されます。両方のケースで xml_root が同じオブジェクトであり、両方のオブジェクトが同じアドレスを持っているかどうかを確認しました。内容を印刷すると、同じxmlが得られました。
代わりに、TinyXML を使用すると正しい結果が得られ、すべての属性にアクセスして正しい結果を得ることができます。次のコードは、正しい no_nodes を提供します。
for(node = xml_root->FirstChild(); node; node = node->NextSibling())
no_nodes++;
ここに奇妙な部分があります。このプロジェクトを Windows 7 でビルドすると、問題なく動作します。関数呼び出しは、常に正しいノード数を返します。以前にこの種の問題に遭遇した人はいますか?
PS: この問題についてあまり詳細を述べていないことは承知していますが、これは巨大なプロジェクトであり、すべてを説明するには数日かかるでしょう。したがって、これは暗闇でのショットにすぎません。