NSXMLParser обрабатывает сложные единицы информации - PullRequest
0 голосов
/ 02 декабря 2011

Я успешно обрабатываю ответ с сервера, используя NSXMLParser.

Примерно так

<data>
<company id="">
 <name>XXX</name>
 <latitude></latitude>
 <longitude></longitude>
</company>
<company id="">
 <name>XXX</name>
 <latitude></latitude>
 <longitude></longitude>
</company>
</data>

Я использовал следующие методы

  • didStartElement: namespaceURI: ... чтобы определить, когда нужно проанализировать новую компанию, я выделяю новый экземпляр. А также, определить, когда атрибут начинается
  • foundCharacters: обрабатывать содержимое каждого атрибута
  • didEndElement: ... компания была проанализирована полностью и может быть добавлена ​​во внутренний список. А также, определите, когда атрибут был обработан, затем установите значение, обработанное в foundCharacters: метод

Теперь мне также нужно получить полный XML для одной компании и сохранить его в локальном кэше. Кто-нибудь знает, есть ли способ использовать NSXMLParser для получения всего контента только для одной компании? Или, может быть, без использования NSXMLParser. не знаю.

<company id="">
 <name>XXX</name>
 <latitude></latitude>
 <longitude></longitude>
</company>

Спасибо,

1 Ответ

1 голос
/ 12 декабря 2011

Наконец-то я решил воссоздать XML, используя методы SAX

парсер: didStartElement:

// Adding the initial TAG of the xml
accountXML = [[NSString alloc] initWithFormat:@"<%@", elementName];
for (NSString *key in [attributeDict allKeys]){
    accountXML = [accountXML stringByAppendingFormat:@" %@=\"%@\"", key
                  , [attributeDict valueForKey:key]];
}
accountXML = [accountXML stringByAppendingString:@">\n"];

и

парсер: didEndElement:

// Add the xml to the account and release it
accountXML = [accountXML stringByAppendingFormat:@"</%@>\n", elementName];
[account setCompleteXML:accountXML];
...