Какао - Как отформатировать файл 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 таким образом? Спасибо!
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];