Ipad XML разбирает сомнения - PullRequest
1 голос
/ 14 июля 2011

мое требование - разобрать файл xml и отобразить его в ipad. Но я был совершенно сбит с толку, как разобрать этот файл xml, я новичок в разборе xml. Пожалуйста, помогите мне, как создать массив для него и как отображать в ipad. Это приложение для журнальных новостей, любой исходный код или пример приложения могут помочь мне.

1 Ответ

2 голосов
/ 14 июля 2011

В iOS есть встроенный класс синтаксического анализа XML, который называется NSXMLParser.В качестве параметра init он принимает NSData, который обычно представляет собой данные, которые вы получаете от веб-службы.Назначьте себя в качестве его делегата и вызовите [parser parse], и он вызовет ваш делегат, когда встретит элемент, когда он завершит элемент и т. Д. См. Документацию для синтаксического анализатора и его протокола делегата .

Если у вас есть контроль над структурой вашего XML, мне будет проще, если он структурирован следующим образом:

<Element attr1='value1' attr2='value2' />

вместо:

<Element>
  <attr1>value1</attr1>
  <attr2>value2</attr2>
</Element>

Причина в том, что обратный вызов, когда он находит элемент:

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
  namespaceURI:(NSString *)namespaceURI
  qualifiedName:(NSString *)qualifiedName
  attributes:(NSDictionary *)attributeDict

, где attributes - словарь значений, поэтому в приведенном выше примере [attributes objectForKey:@"attr1"] даст вам "value1«Если бы он был структурирован первым способом.Если это второй путь, вы в конечном итоге делаете много управления состоянием, что немного проблематично, особенно если у вас есть элементы внутри элементов и т. Д.

В дополнение к NSXMLParser есть open-sourceпарсеры, которые либо делают все сами, либо оборачивают встроенный парсер.Я написал свою собственную обертку для этого раньше.См. здесь для сообщения на эту тему (спасибо этот вопрос за ссылку).

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