Вот пример кода, который читает XML из файла. Вы можете настроить его для использования доступного объекта NSString / NSData. Обратите внимание , что, поскольку мы не знаем точных потенциальных форматов, которые могут возвращать ваши вызовы SOAP, это не очень надежно, это просто решение, которое работает с предоставленными вами данными. 1004 *
int main (int argc, const char * argv[])
{
@autoreleasepool {
NSString* path = @"/Path/To/Your/File";
NSData *contents = [[NSFileManager defaultManager] contentsAtPath:path];
TBXML *xml = [TBXML tbxmlWithXMLData:contents];
TBXMLElement *rootElement = [xml rootXMLElement];
TBXMLElement *rootItemElem = [TBXML childElementNamed:@"item" parentElement:rootElement];
while (rootItemElem != nil) {
TBXMLElement *areaElement = rootItemElem->firstChild;
while (areaElement != nil) {
TBXMLElement *areaItemElement = [TBXML childElementNamed:@"item" parentElement:areaElement];
while (areaItemElement != nil) {
TBXMLElement *localeItem = areaItemElement->firstChild;
NSLog(@"Checking locale %s", localeItem->name);
TBXMLElement *specificItem = [TBXML childElementNamed:@"item" parentElement:localeItem];
while (specificItem != nil) {
NSLog(@"Item with value: %@", [TBXML textForElement:specificItem]);
specificItem = [TBXML nextSiblingNamed:@"item" searchFromElement:specificItem];
}
areaItemElement = [TBXML nextSiblingNamed:@"item" searchFromElement:areaItemElement];
}
areaElement = areaElement->nextSibling;
}
rootItemElem = [TBXML nextSiblingNamed:@"item" searchFromElement:rootItemElem];
}
}
return 0;
}
А на выходе:
2011-10-19 08:20:40.321 Testing[14768:707] Checking locale new_england_north
2011-10-19 08:20:40.323 Testing[14768:707] Item with value: boston s, ma
2011-10-19 08:20:40.323 Testing[14768:707] Item with value: providence, ri
2011-10-19 08:20:40.324 Testing[14768:707] Item with value: boston, ma
2011-10-19 08:20:40.324 Testing[14768:707] Item with value: portland, me
2011-10-19 08:20:40.325 Testing[14768:707] Item with value: boston, ma
2011-10-19 08:20:40.326 Testing[14768:707] Item with value: boston central
2011-10-19 08:20:40.326 Testing[14768:707] Item with value: boston north, ma
2011-10-19 08:20:40.327 Testing[14768:707] Item with value: boston south, ma
2011-10-19 08:20:40.327 Testing[14768:707] Checking locale upstate_new_york
2011-10-19 08:20:40.328 Testing[14768:707] Item with value: binghampton, ny
2011-10-19 08:20:40.328 Testing[14768:707] Item with value: rochester, ny
2011-10-19 08:20:40.329 Testing[14768:707] Item with value: albany s, ny
2011-10-19 08:20:40.329 Testing[14768:707] Item with value: syracuse, ny
2011-10-19 08:20:40.330 Testing[14768:707] Item with value: albany, ny
2011-10-19 08:20:40.330 Testing[14768:707] Item with value: buffalo, ny
Используя это, должно быть довольно просто создать NSArray
и сохранить элементы, или создать NSArray
для каждой локали и таким образом разделить элементы. (Хранение их в ключе NSDictionary
, указанном в локали.)