我们采用 Tiny XML 作为我们的 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 以跳过其他元素类型,而不必递归处理它们,同时仍然找到所有调色板。所以我想我正在寻找一种只访问调色板元素,而完全忽略其他所有内容的方法。