2013-07-25 19 views
2

Я пробовал OmniXML после многих лет работы с реализацией по умолчанию msxml. У меня есть несколько структур xml (некоторые из которых довольно массивные), для которых я изначально создал привязку с помощью мастера Delphi. Затем привязка была отредактирована вручную, чтобы исправить ошибки, а что нет.Delphi, OmniXML - привязка XML?

Первый вопрос: есть ли (несколько) простой способ создания такой привязки для OmniXML? Я подозреваю, что нет, но вы никогда не знаете ... Я начал вручную редактировать свои структуры, чтобы попытаться сделать интерфейсы и классы подходящими для omniXML, но это довольно немного (очень утомительная) работа

Второй вопрос: В некоторые из демонстраций и онлайн, казалось бы, что «привязка данных» (из-за отсутствия лучшего термина) выполняется путем наследования классов, определенных в OmniXMLPorperties (TGpXMLxxxx). Поэтому я начал заниматься этим. Есть ли преимущество, по крайней мере в моем случае, в определении привязки данных таким образом, а не к переработке того, что создано мастером?

Спасибо!

PS: В случае, если это имеет значение, я использую Delphi XE2

ответ

2

родной XML Data Делфи Binding не привязан к какой-либо конкретной реализации поставщика XML DOM. Он основан на TXMLDocument и связанных с ним интерфейсах, которые затем получают доступ к внутренним интерфейсам DOM для конкретного поставщика.

В Windows MSXML используется поставщиком DOM по умолчанию. В Mac OSX используется ADOM/OpenXML, используемый поставщиком DOM по умолчанию. Но вы можете изменить, какой поставщик DOM используется. Вам просто нужно назначить имя поставщика DOM глобальной переменной DefaultDOMVendor в модуле Xml.XmlDom.pas и убедиться, что соответствующая реализация DOM была зарегистрирована через RegisterDOMVendor() (для MSXML и ADOM/OpenXML просто добавьте соответствующее подразделение DOM в свой пункт uses - Xml.Win.msxmldom для MSXML, Xml.adomxmldom для ADOM/OpenXML - как они называют RegisterDOMVendor() внутренне).

Таким образом, в этом случае, вы бы просто найти (или сделать) обертку реализации DOM для OmniXML поэтому он может подключиться к TXMLDocument, а затем зарегистрировать его RegisterDOMVendor() и установите DefaultDOMVendor переменное зарегистрированное имя DOM.

+2

И поскольку OmniXML совместим с MSXML, который не должен создавать проблемы. – Runner

+0

Ницца, это звучит относительно просто! Спасибо Реми, я попробую. – Bourgui

+0

@Bourgui, пожалуйста, сообщите нам, что делает ваша попытка. –

 Смежные вопросы

  • Нет связанных вопросов^_^