Разбор NSXMLDocument в пользовательские объекты

Можно ли с помощью NSXMLDocument без использования XPath проанализировать XML-документ и десериализовать его в пользовательские объекты для создания иерархии дерева объектов?

Например, если у меня есть xml, показанный ниже, можно ли поместить детали в объект ресторана и объект контента внутри него?

<restaurants>
   <content>spanish name</content>
   <content>english name</content>
</restaurant>
<spa>
   <content>spa spanish name</content>
   <content>spa english name</content>
</spa>

Я буду использовать ваш ответ выше, чтобы расширить его для программирования в kissxml в iOS. Поскольку в документе kissXML упоминается, что синтаксический анализатор XML ведет себя так же, как NSXMLDocument, поэтому я задал вопрос, используя NSXMLDocument.


person inforeqd    schedule 14.02.2012    source источник


Ответы (1)


Если вы знаете ожидаемую структуру содержимого, проще всего просто использовать NXMLParser и прокручивать его в поисках нужных вам битов и отслеживать предыдущий бит, создавая объект по мере их нахождения.

Если вам нужен древовидный подход, рассмотрите возможность изучения XQuery и XPath, они не так уж и плохи. Без них единственное, что действительно дает вам NSXMLDocument, — это привязки Cocoa.

В конце концов, вы должны каким-то образом преобразовать свои данные.

С NSXMLDocument вам все равно будет полезно проверить XML DTD, если это возможно, чтобы убедиться, что у вас есть хорошие данные.

С NSXMLParser вы можете работать без формального DTD. Вам нужно только беспокоиться о том, насколько велики данные, как вы хотите их анализировать, а затем провести пробы и ошибки с тестовыми данными, чтобы убедиться, что они захватывают то, что вам нужно или нужно.

person uchuugaka    schedule 05.10.2012