Мастер привязки данных в Delphi XE - его можно настроить для сопоставления с интерфейсами MSXML? - PullRequest
4 голосов
/ 25 апреля 2011

Мастер привязки данных в Delphi XE генерирует классы и интерфейсы, которые наследуются от собственной реализации DOM Delphi (ADOM XML v4), которая, по-видимому, не поддерживает проверку по схемам - опция «validate on parse» работает только стип поставщика MSXML - как видно из исходного кода VCL, а также поведения компонента XMLDocument в IDE.Кажется, вся поддержка валидации основана на реализации MSXML, что делает мастер бесполезным, если вам нужна валидация схемы.Я что-то здесь упускаю?Есть ли способ настроить мастер привязки (или некоторую базовую утилиту) для генерации классов и интерфейсов на основе MSXML, который поддерживает проверку? Или существуют ли вызовы / интерфейсы, которые поддерживают проверку схемы с помощью реализации Delphi ADOM XML, с которой я не сталкивался?

МНГ

1 Ответ

2 голосов
/ 25 апреля 2011

Код, сгенерированный мастером привязки данных XML, зависит от единиц измерения XMLDoc и XMLIntf (ссылки на документы: TXMLDocument и IXMLDocument ).

IXMLDocument реализован в TXMLDocument, который является универсальной оболочкой для XML DOM, поддерживаемой Delphi. DOM, используемый TXmlDocument, зависит от значения свойства DOMVendor .

Если DOMVendor не указан при активации экземпляра TXMLDocument (это не так, как мастер связывания данных XML генерирует нейтральный код DOM), то фактический используемый XML DOM зависит от этих двух членов Блок XMLDOM :

var
  DefaultDOMVendor: string;
  DOMVendors: TDOMVendorList;

В вашем случае кажется, что MSXML DOM является либо XML DOM по умолчанию, либо единственным доступным XML DOM.

Поэтому вам следует проверить значения DefaultDOMVendor и списка DOMVendors .

Конечно, было бы полезно, если бы вы могли отредактировать свой вопрос со значениями, указанными выше, и воспроизводимым случаем, который показывает, как вы наблюдали, как используется MSXML DOM.

Edit:

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

DefaultDOMVendor = 'MSXML';
...