TinyXML-2中`TiXmlNode :: FirstChild(const char *)`的替代方法是什么?

时间:2016-10-28 18:58:31

标签: c++ tinyxml tinyxml2

我正在更新使用legacy TinyXml库的代码,而不是使用new TinyXML-2版本。

编辑时,我注意到TiXmlNode::FirstChild(const char *)中的TinyXML-2函数无法直接替换。

我的问题是:

  1. 是否有方便的替代我错过的上述功能?
  2. 如果没有,下面的示例代码应该如何为TinyXML-2更新?
  3. // TiXmlElement *element; // assume this was correctly loaded
    TiXmlNode *node;
    
    if ((node = element->FirstChild("example")) != nullptr)
    {
        for (TiXmlElement *walk = node->FirstChildElement();
            walk != nullptr;
            walk = walk->NextSiblingElement())
        {
            // ...
        }
    }
    

1 个答案:

答案 0 :(得分:1)

tinyxml2有

const XMLElement * XMLNode::FirstChildElement (const char *value=0) const

您的代码块大致相同:

if (auto example = element -> FirstChildElement ("example")
{
   for (auto walk = example -> FirstChildElement();
        walk;
        walk -> NextSiblingElement())
   {
   // walk the walk
   }
}

或者您可以查看与您的代码段相关的my add-on for tinyxml2

for (auto walk : selection (element, "example/")
{
   // walk the walk
}