Параметры iPhone для чтения элементов из XML? - PullRequest
0 голосов
/ 19 марта 2010

Я получаю доступ к этим данным с веб-сервера, используя NSURL, и я пытаюсь решить, стоит ли мне читать это как XML или я просто использую NSScanner и извлекаю нужный бит [data], Я просмотрел в Интернете примеры извлечения полей из XML на iPhone, но все это кажется немного излишним для того, что мне нужно. Может кто-нибудь сделать какие-либо предложения или указать мне в правильном направлении. В идеальном мире я действительно хотел бы просто указать [data] и вернуть строку "2046 3433 5674 3422 4456 8990 1200 5284"

<!DOCTYPE tubinerotationdata>
<turbine version="1.0">
<status version="1.0" result="200">OK</status>
<data version="1.0">
    2046 3433 5674 3422 4456 8990 1200 5284
</data>
</turbine>

любые комментарии / идеи очень ценятся.

1010 * Гэри *

Ответы [ 3 ]

2 голосов
/ 19 марта 2010

Лично я бы использовал NSXMLParser, чтобы у вас было все на случай, если вы захотите извлечь больше информации из файла XML.

2 голосов
/ 19 марта 2010

Вы всегда должны анализировать XML с помощью синтаксического анализатора XML.Нет никаких гарантий на порядок и другие вещи, которые в конечном итоге сломают ваш код.Разбор с настоящим парсером XML - единственный способ убедиться, что ваш код не сломается при изменении ввода.

0 голосов
/ 19 марта 2010

Для таких простых задач с данными я использую RegexKitLite , которая представляет собой легковесную библиотеку регулярных выражений для iPhone.Базовая реализация может выглядеть следующим образом (при условии, что содержимое вашего файла находится в NSString *XMLString)

NSString *regex = @"<data\\s+version=\"(\\d+\\.\\d+)\">([^<]+)<\\/data>";
NSArray *components = [XMLString arrayOfComponentsMatchingRegex:regex];
if (components.count == 3) {
  // [components objectAtIndex:0] contains the full match
  // [components objectAtIndex:1] contains the version number
  // [components objectAtIndex:2] contains the contents of the data tag
  //                              (including leading/trailing whitespace)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...