Какао: загрузка файла XML (массив); - PullRequest
1 голос
/ 18 февраля 2011

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

Файл XML:

<xml ...>
<adressbook>
    <contact name="Name" phone="00000000"/>
    <contact name="Name2" phone="00000002"/>
    <contact name="Name3" phone="00000003"/>
    <contact name="Name4" phone="00000004"/>
</adressbook>

Теперь, что мне нужно сделать, еслиЯ хочу, чтобы каждый атрибут в одном массиве, скажем:

NSArray * name;NSArray * phone;

Я хочу, чтобы в основном каждый массив содержал (последовательно) атрибуты XML.В этом случае это будет выглядеть так:

имя будет содержать:

Имя Имя2 Имя3 Имя4

И телефон: 00000000 000000002 000000003 000000004

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 19 февраля 2011

Источник:

NSXMLDocument* doc = [[NSXMLDocument alloc] initWithContentsOfURL: [NSURL fileURLWithPath:@"/folder/with/sample.xml"] options:0 error:NULL];

NSMutableArray* objects = [[NSMutableArray alloc] initWithCapacity:10];
NSMutableArray* descriptions = [[NSMutableArray alloc] initWithCapacity:10];

NSXMLElement* root  = [doc rootElement];
NSArray* objectElements = [root nodesForXPath:@"//object" error:nil];
for(NSXMLElement* xmlElement in objectElements)
    [objects addObject:[xmlElement stringValue]];

NSArray* descElements = [root nodesForXPath:@"//description" error:nil];
for(NSXMLElement* xmlElement in descElements)
    [descriptions addObject:[xmlElement stringValue]];

NSLog(@"%@", objects);
NSLog(@"%@", descriptions);

[doc release];
[objects release];
[descriptions release];

Пример XML-файла:

<?xml version="1.0" encoding="UTF-8"?>
<items>
<item id="0">
<object>First Object</object>
<description>Description One</description>
</item>
<item id="1">
<object>Second Object</object>
<description>Description Two</description>
</item>
</items>
1 голос
/ 19 февраля 2011

Не стесняйтесь взглянуть на мою запись в блоге ниже об упрощенном XML

http://www.memention.com/blog/2009/10/31/The-XML-Runner.html

Код доступен на github

https://github.com/epatel/EPXMLParsers

Бен Сгро предоставил исправление для обработки атрибутов.

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