Как читать и анализировать XML-файл на iphone? - PullRequest
2 голосов
/ 20 января 2010

У меня есть веб-сервер, который возвращает файл XML. Скажем http://www.foo.bar/foo.php?wantXML=1

Как мне получить этот файл с сервера, а затем проанализировать его для доступа к данным? Я полагаю, мне придется создавать новую тему и делать все это в фоновом режиме, чтобы не блокировать пользовательский интерфейс? На какие классы я должен смотреть?

Ответы [ 4 ]

1 голос
/ 20 января 2010

SeismicXML образец от Apple - это именно то, что вы ищете.

1 голос
/ 20 января 2010

Я использовал два подхода: NSXMLParser для простых и маленьких файлов и libxml для больших файлов.Но есть библиотеки, такие как TouchXML, которые также могут упростить процесс.

В основном, если у вас небольшой набор данных, обработка DOM в памяти может работать нормально.Но в таком устройстве, как iPhone, лучше использовать парсеры на основе SAX, такие как libxml2.

Когда вам нужно загрузить данные:

[self performSelectorInBackground:@selector(LoadYourData) withObject:nil];

не заблокируетосновной поток пользовательского интерфейса.

Для libxml2 вам нужно будет реализовать обратные вызовы C для обработки фрагментов данных, поступающих из NSURLConnection.

1 голос
/ 20 января 2010

Чтобы получить XML или другой материал через http, я рекомендую изучить ASIHTTPRequest

Не стесняйтесь взглянуть на мои удобные классы, которые я создал, чтобы анализировать простые XML-документы, как вы можетеполучить от Nike +. Ссылка

В основном используется следующее

NameValueParser *parser = [NameValueParser parser];
[parser addFieldName:@"screenName"]; // Name
[parser addFieldName:@"rank"];       // Position
[parser addFieldName:@"progress"];   // Distance
[parser parseData:data];

NSLog(@"%@", [parser list]); // Lets see what we got
1 голос
/ 20 января 2010

Вы можете попытаться сделать:

  • Манипуляции со строками
  • XPATH

Id выбрать xpath во всех случаях, кроме самых простых - и дажев тех, вы не можете спорить с xpath.Хотя я не уверен в библиотеках, но я знаю, что libXML написан на C и поддерживается на iphone.

Для работы со строками вы можете использовать семейство методов NS * (substringFromIndex, substringToIndex и т. Д.).не забывайте: http://developer.apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Classes/NSXMLParser_Class/Reference/Reference.html

Ранчо Большого Ботаника, 'Разбор XML в Какао': http://weblog.bignerdranch.com/?p=48

...