используя TBXML и анализируем атрибут, который существует не всегда - PullRequest
0 голосов
/ 16 марта 2011

Я анализирую XML-файл, используя TBXML. мой xml такой:

<locations>
   <location>
      <id>1</id>
      <name>hello</name>
   </location>
   <location>
      ...
</locations>

все работает нормально, но есть большая проблема: иногда xml может "пропустить" тег "name", например, что-то вроде этого:

...
</location>
<location>
   <id>43</id>
</location>
<location>
...

в чем проблема? что с помощью этого кода

TBXMLElement *location = [TBXML childElementNamed:@"location" parentElement:root];
while (location){
   TBXMLElement *id = [TBXML childElementNamed:@"id" parentElement:location];
   TBXMLElement *name = [TBXML childElementNamed:@"name" parentElement:location];
   ... //do something
   location = location -> nextSibling;
}

приложение вылетает при чтении тега «имя», потому что иногда его нет ...

Как я могу решить это?

спасибо!

1 Ответ

0 голосов
/ 16 марта 2011

Приложение, вероятно, дает сбой, потому что ваш ... //do something предполагает, что name не ноль.Если элемент <name> не найден в XML, переменная name в вашем коде в конечном итоге будет иметь значение nil.

Какой код вы выделили в комментарии "сделать что-то"?

Кстати, я нашел эту информацию, прибегнув к поиску чего-то вроде «tbxml проверка на наличие дочерних узлов» и найдя следующую страницу:

http://www.tbxml.co.uk/forum/viewtopic.php?f=4&t=12

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...