XML パーサーとして Tiny XML を採用しています。XML ファイルからパレットを取得するコードを作成しており、次のようなビジター関数を作成しています。
PALETTE_PARSER::VisitEnter( const TiXmlElement& Element, const TiXmlAttribute* First Attribute)
{
if( Element.ValueStr() == "palette" )
{
AddPalette( Element );
return( true );
}
else
{
return( false );
}
}
驚いたことに、これが最初の要素を解析してpalette停止したことがわかりました。確認したところ、ドキュメントには
Visit メソッドから「true」を返すと、再帰的な解析が続行されます。false を返すと、このノードの子またはその兄弟は訪問されません。
子供を解析しないのは理にかなっていますが、兄弟は奇妙に思えます。この動作の理由は何ですか? 私がやりたいことをさせる方法はありますか?
つまり、私はパレット要素だけに興味がありますが、それらの要素が複数ある可能性があります (他の要素も同様です)。すべてのパレットを見つけながら、再帰的に処理するのではなく、false を返して他の要素の種類をスキップしたかったのです。したがって、他のすべてを完全に無視して、パレット要素のみにアクセスする方法を探していると思います。