Быстрый способ получить NSDictionary из XML-представления NSData? - PullRequest
0 голосов
/ 17 июня 2010

Я загрузил XML-файл как NSData в память и проанализировал элементы, используя NSXMLParser.Несмотря на то, что это работает, поддерживать код очень уродливо и сложно, так как для анализа нужно около 150 различных элементов.

Я знаю, что есть хорошие сторонние решения, но я хочу сохранить его с iPhone SDK дляцель практики и веселья.

Итак, я подумал: почему бы не преобразовать этот XML-файл в NSDictionary?Имея это, я мог бы использовать быстрое перечисление для перемещения по элементам.

Или это тот же самый объем уродливого кода, который необходим для синтаксического анализа и обработки XML с помощью NSXMLParser?

Буду ли ясоздать NSDictionary для каждого найденного узла в XML и создать огромный, содержащий всю структуру и данные?Или есть еще более простой способ?

Ответы [ 4 ]

1 голос
/ 17 июня 2010

NSDictionary не может прочитать любой случайный формат XML.Он может читать только XML в определенном формате, который является форматом plist.

Плист фактически предшествует xml, а текущий формат plist является просто версией xml оригинала.Имя plist является сокращением «списка свойств», поскольку файлы определяют свойства экземпляра класса.Поэтому все теги xml в файле должны определять элементы экземпляра класса, который реализует протокол NSCoder.

Итак, да, если вы начинаете с произвольного xml, вы должны тщательно проанализировать его, чтобы преобразовать в NSDictionary или какой-либо другой класс.

Я бы не стал писать парсер с нуля по любой причине, кроме как в качестве учебного упражнения.Каждый отдельный формат XML требует другого анализатора.Лучше использовать существующий парсер, чтобы 80% работы выполнялось за вас.В реальном проекте вы все равно будете этим заниматься.

1 голос
/ 15 декабря 2010

Привет, dontWatchMyProfile, Вам лучше использовать формат XML NSString.Для этого формата у меня есть небольшая библиотека, легко конвертируемая

http://bcaccinolo.wordpress.com/2010/11/14/xml-to-nsdictionary-converter/

Я надеюсь, что это может помочь.

Приветствия, Бенуа

1 голос
/ 17 июня 2010

Есть много парсеров (например, XPathQuery, TouchXML и т. Д.).

0 голосов
/ 24 октября 2012

я еще не тестировал этот код.

http://troybrant.net/blog/2010/09/simple-xml-to-nsdictionary-converter/

...