NSDictionary to XML - PullRequest
       2

NSDictionary to XML

5 голосов
/ 03 февраля 2012

Я пытаюсь преобразовать NSDictionary в XML.(Мне удалось преобразовать NSDictionary в JSON).Но теперь мне нужно преобразовать NSDictionary в XML.Есть ли в Objective-C встроенный сериализатор, подобный JSON?

int r = arc4random() % 999999999;

//simulate my NSDictionary (to be turned into xml)
NSString *name = [NSString stringWithFormat:@"Posted using iPhone_%d", r];
NSString *stock_no = [NSString stringWithFormat:@"2342_%d", r];
NSString *retail_price = @"12345";

NSArray *keys = [NSArray arrayWithObjects:@"name", @"stock_no", @"retail_price", nil];
NSArray *objects = [NSArray arrayWithObjects:name,stock_no,retail_price, nil];
NSDictionary *theRequestDictionary = [NSDictionary dictionaryWithObjects:objects forKeys:keys];

NSDictionary *theFinalRequestDictionary = [NSDictionary dictionaryWithObject:theRequestDictionary forKey:@"product"];

... // другой неактуальный код пропущен

NSData *theBodyData = [NSPropertyListSerialization dataFromPropertyList:theFinalRequestDictionary format:NSPropertyListXMLFormat_v1_0   errorDescription:nil];
NSPropertyListFormat format;

id XMLed = [NSPropertyListSerialization propertyListFromData:theBodyData
                                            mutabilityOption:NSPropertyListImmutable
                                                      format:&format
                                            errorDescription:nil];

NSLog(@"the XMLed is this: %@", [NSString stringWithFormat:@"%@", XMLed]);

NSLog не печатаетстрока в формате XML.Это печатает это как NSDictionary.Что я должен использовать для сериализации моего NSDictionary в XML?

Ответы [ 2 ]

2 голосов
/ 03 февраля 2012

propertyListFromData:... возвращает «объект списка свойств», то есть в зависимости от содержимого данных, массива или словаря.То, что вас действительно интересует (xml), возвращается dataFromPropertyList:... и, таким образом, сохраняется в вашей переменной theBodyData.

Попробуйте это:

NSLog(@"XML: %@", [[[NSString alloc] initWithData:theBodyData encoding:NSUTF8StringEncoding] autorelease]);
0 голосов
/ 03 февраля 2012

Существует множество разновидностей XML. Если вы не придирчивы к конкретным тегам и если содержимое вашего словаря ограничено типами, используемыми в списках свойств (NSString, NSNumber, NSDate и т. Д.), Вы можете записать свой словарь в список свойств в одну строку: 1001 *

[myDict writeToFile:somePath atomically:YES];

Если вы предпочитаете хранить XML в памяти вместо записи в файл, используйте NSPropertyListSerialization, как вы делаете.

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