Какао - Как отформатировать файл XML

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

Например, если я использую этот код для создания простого XML-файла:

NSXMLElement *fallback_driver = [[NSXMLElement alloc] initWithName:@"fallback-driver"];

NSXMLElement *folder = [[NSXMLElement alloc] initWithName:@"folder"];
[folder setStringValue:[ads_make objectValueOfSelectedItem]];
NSXMLElement *filename =[[NSXMLElement alloc] initWithName:@"filename"];
[filename setStringValue:ads_driver_name_selected];

[fallback_driver addChild:folder];
[fallback_driver addChild:filename];

NSXMLElement* rootNode = [ads_user_printxml rootElement];
[rootNode addChild:fallback_driver];

Когда это запустится, я бы хотел, чтобы вывод был в соответствии с комментариями на рисунке ниже, а не с фактическим XML (без комментариев).

XML-код

Как я могу отформатировать файл XML таким образом? Спасибо!

PS

Спасибо за ответ.. Однако я хотел бы преобразовать имеющийся у меня NSXMLDocument в NSData для сохранения...

я стараюсь

NSData *newData = [[ads_user_printxml XMLDataWithOptions:NSXMLNodePrettyPrint]XMLData];

однако я получаю предупреждение о том, что "NSData" может не отвечать на "-XMLData", где до того, как я добавил XMLDataWithOptions, оно работало нормально. Я также попробовал метод "XMLStringWithOptions" (как вы сказали - но полагал, что данных было больше соответственно), но было сгенерировано то же предупреждение.

Есть идеи? Большое спасибо!

1 ответ

Решение

Вы можете вывести красиво отформатированную строку XML, используя следующее:

NSString* string = [xmlNode XMLStringWithOptions:NSXMLNodePrettyPrint];

Обратите внимание, что, потому что NSXMLDocument а также NSXMLElement подклассы NSXMLNodeВы можете сделать это с этими классами также.

Если ты хочешь NSData вместо строки просто сделайте:

NSData* xmlData = [xmlNode XMLDataWithOptions:NSXMLNodePrettyPrint];
Другие вопросы по тегам