Проверьте, существует ли узел XML, используя Tinyxml - PullRequest
0 голосов
/ 08 апреля 2011

Я использую tinyXml для анализа XML-файла в C ++. Может ли кто-нибудь сказать мне, как я могу проверить, существует ли узел (родитель / ребенок / следующий брат) или нет. Ниже приведены единственные узлы в файле XML, над которым я работаю.

TiXmlElement* Instrmt = TrdCaptRpt->FirstChildElement();
TiXmlElement* Undly = Instrmt->NextSiblingElement();
TiXmlElement* Amt = Undly->NextSiblingElement();
TiXmlElement* RptSide = Amt->NextSiblingElement();
TiXmlElement* Pty = RptSide->FirstChildElement();

если в последовательности отсутствует какой-либо из вышеперечисленных узлов, программа прерывает работу с ошибкой сегментации.

Может кто-нибудь, пожалуйста, помогите.

Спасибо

Ответы [ 2 ]

1 голос
/ 08 апреля 2011

TiXml предоставляет класс TiXMlHandle , чтобы заботиться о проверке на NULL, поэтому он должен разобрать ошибки сегментации.Вам все еще нужно проверить наличие узла в конце цепочки.

1 голос
/ 08 апреля 2011

Вы можете использовать функцию const TiXmlNode* TiXmlNode::FirstChild ( const char * value ) const класса TiXmlNode и проверить, равен ли TiXmlNode* полученный NULL или нет.

TiXmlNode* child = mynode->FirstChild();

if (child != NULL)
{
  //A child exists....
}

Для родителей у вас есть аналогичная функция. Вы можете найти документацию здесь .

Надеюсь, это поможет.

...