Как читать и анализировать файл .xml - PullRequest
2 голосов
/ 20 августа 2010

Мне нужно просто прочитать .xml файл;как это:

<exchanges>
    <exchange>
        <timestamp>2010-08-19 17:15:56</timestamp>
        <userid>Elijah-Woods-MacBook-Pro.local</userid>
        <clientname>elijah</clientname>
        <botid>Jarvis</botid>
        <input>firsthello</input>
        <response>Hello, sir. How may I help you?</response>
    </exchange>
</exchanges>

Затем проанализируйте все, что находится между тегом 'response'.

Илия

Ответы [ 3 ]

3 голосов
/ 21 августа 2010

Основная идея, код не завершен .. на основе GDataXML

http://code.google.com/p/gdata-objectivec-client/source/browse/trunk/Source/XMLSupport/

также смотрите этот анализ нескольких парсеров

http://www.raywenderlich.com/553/how-to-chose-the-best-xml-parser-for-your-iphone-project

NSArray *entries = [doc nodesForXPath:@"//exchanges/exchange" error:nil];
for (GDataXMLElement *entry in entries) {
    NSMutableDictionary * dict = [[[NSMutableDictionary alloc]initWithCapacity:7 ] autorelease];
    [dict setValue:[[[entry elementsForName:@"timestamp"] objectAtIndex:0] stringValue] forKey:@"timestamp"];
    [dict setValue:[[[entry elementsForName:@"userid"] objectAtIndex:0] stringValue] forKey:@"userid"];
    [dict setValue:[[[entry elementsForName:@"clientname"] objectAtIndex:0] stringValue] forKey:@"clientname"];
    [dict setValue:[[[entry elementsForName:@"botid"] objectAtIndex:0] stringValue] forKey:@"botid"];
    [dict setValue:[[[entry elementsForName:@"input"] objectAtIndex:0] stringValue] forKey:@"input"];
    [dict setValue:[[[entry elementsForName:@"response"] objectAtIndex:0] stringValue] forKey:@"response"];

}
2 голосов
/ 20 августа 2010

У вас есть два варианта разбора XML в Какао:

  1. Event-Driven , в котором анализатор генерирует события, на которые отвечает ваш класс делегата.
  2. На основе дерева , в котором анализатор создает дерево XML, которое можно запрашивать или изменять.

Управляемый событиямисинтаксический анализ требует меньше памяти, но поскольку вы не строите целое дерево XML, вы не можете использовать XPath или XQuery для получения информации о документе.На основе дерева обычно используется больше памяти (поскольку весь документ XML преобразуется в форму объекта и сохраняется в памяти), но он предлагает более мощные механизмы для извлечения данных из дерева.

0 голосов
/ 20 августа 2010

TouchXML также очень хорошая библиотека для XML на iPhone.Доказано, что он также является одним из самых быстрых для анализа.

Вот пример проекта: http://dblog.com.au/general/iphone-sdk-tutorial-building-an-advanced-rss-reader-using-touchxml-part-1/

Есть еще много онлайн, если вы хорошо "touchxml iphone tutorial", хотя

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