Какая альтернатива `TiXmlNode::FirstChild(const char *)` в TinyXML-2?

Я обновляю код, который использует устаревшую библиотеку TinyXml, чтобы использовать вместо нее новую версию TinyXML-2.

Во время редактирования я заметил, что функцияTiXmlNode::FirstChild(const char *) не имеет прямой замены в TinyXML-2.

Мои вопросы:

  1. Есть ли удобная замена вышеупомянутой функции, которую я пропустил?
  2. Если нет, то как обновить приведенный ниже пример кода для TinyXML-2?
// 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 ответ

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
   }
}

Или вы можете посмотреть на мое дополнение для tinyxml2, с которым ваш фрагмент будет:

for (auto walk : selection (element, "example/")
{
   // walk the walk
}
Другие вопросы по тегам