XMLAdapter представляет собой класс с "двухсторонним движением". Вы можете импортировать XML и содержащуюся в нем схему или вы можете создать и сгенерировать XML из таблиц.
Объект XMLAdapter хранит объектную ссылку на схему XML (XML Schema) и узлы объектной модели документа (DOM). То есть он не хранит информацию о реальной схеме или содержании. Объект XMLAdapter содержит коллекцию Tables, которая, в свою очередь, содержит один или более объектов XMLTable и описывает XML, как курсор Visual FoxPro вместе с любой связанной информацией. Каждый объект XMLTable может также содержать дочерний XMLTable, и, самое большее, коллекцию Fields с одним или более объектами XMLField.
Замечание |
---|
Класс XMLAdapter требует, чтобы в системе был установлен Microsoft XML Core Services (MSXML) 4.0 Service Pack 1 (SP1) или более поздний. |
С использованием класса XMLAdapter, вы можете выполнять следующие задачи:
-
Интерпретировать указанные ниже форматы схем, при использовании методов LoadXML и Attach объекта XMLAdapter :
-
W3C XML Schemas (XS), W3C XML Schemas (XS) используемые с .NET DataSets и SQL-XML
-
Microsoft XML Data Reduced Schema (XDR) посредством SQL-XML
-
Схемы ADO Recordset
Замечание Метод XMLAdapter LoadXML может некорректно интерпретировать прочие форматы схем XML, которые созданы посредством других программных продуктов.
-
-
Получать XML и связанную с ним схему из XML источника. XMLAdapter преобразовывает содержащуюся схему в объект XMLTable и соответствующие ему объекты XMLField, используя методы LoadXML и Attach объекта XMLAdapter.
-
Создавать курсор на основе схему и заполнять его данными представленными объектом XMLTable, с помощью метода ToCursor объектаXMLTable.
-
Представлять изменения из .NET DiffGram в локальные или удаленные таблицы с помощью метода ApplyDiffgram объекта XMLTable.
-
Добавлять один или более объектов XMLTable в коллекцию Tables объекта XMLAdapter или указывать, что методы LoadXML, Attach или AddTableSchema объекта XMLAdapter должны сделать это для вас.
-
Использовать метод ToXML объекта XMLAdapter для генерации XML-документа в формате схемы W3C XML из одного или более курсоров или таблиц, на которые ссылается объект XMLAdapter.
XMLAdapter |
Примечания
Если вы используете объект XMLAdapter для конвертирования схемы XDR в схему XSD, вы должны изменить значение свойства XMLNamespace объекта XMLAdapter; в противном случае, XML-парсер не сможет перезагрузить XML. Приведенный ниже пример иллюстрирует такой сценарий:
Скопировать код | |
---|---|
TEXT TO cXML NOSHOW |
В случае, когда схема отсутствует или недоступна, вы можете указать какую-то схема, которую Visual FoxPro может использовать при конверсии, путем установки свойства XMLSchemaLocation объекта XMLAdapter. Вы должны определить значение этого свойства до вызова метода LoadXML. Когда Visual FoxPro исполняет метод LoadXML, то он ищет схему в следующем порядке:
-
Внутренняя схема
-
Внешняя схема, как указано в XML-документе
-
Схема, указанная в качестве значения свойства XMLSchemaLocation
Приведенный ниже пример создает объекта класса XMLAdapter с коллекцией таблиц Tables, которая остается пустой до тех пор, пока вы не загрузите действительный XML в объект класса XMLAdapter:
Скопировать код | |
---|---|
oMyAdapter=CREATEOBJECT("xmladapter") |
XML и данные XML-схемы, которые вы запрашиваете путем вызова метода LoadXML объекта класса XMLAdapter отсаются в памяти, до тех пор, пока они не будут замещены последующим вызовом метода LoadXML или до момента, когда они будут специально удалены, посредством вызова метода ReleaseXML объекта XMLAdapter.
Nested Tables (вложенные таблицы) В приведенной ниже таблице описывается, как XMLAdapter обрабатывает вложенные таблицы, будь то индивидуальные таблицы или таблицы, полностью зависящие от источника данных XML.
Источник данных XML | Описание |
---|---|
ADO.NET DataSet |
XMLAdapter рассматривает каждую вложенную таблицу, как отдельную таблицу, которая может быть сконвертирована в курсор Visual FoxPro. При анализе XML-схемы, методы LoadXML и Attach объекта XMLAdapter создают индивидуальные объекты XMLTable для каждой вложенной таблицы и добавляют их в коллекцию таблиц Tables. Вы можете использовать методы ToCursor, ChangesToCursor и ApplyDiffgram объекта XMLTable для получения данных для каждой таблицы. |
SQL XML |
XMLAdapter рассматривает каждую вложенную таблицу, как неотделимую от родительской таблицы. Когда запрашиваются данные, окончательный результат операции объединения (join) между этими таблицами представляет собой единичный результат. Если имеется множественный уровнь вложенности, такой как в случае, если дочерняя таблица содержит свою дочернюю таблицу и так далее, этот единичный результат содержит данные из операции объединения всех таблиц в иерархии. Методы LoadXML и Attach объекта XMLAdapter создают объекта XMLTable для всех таблиц. Однако, в коллекцию Tables вводится только объект XMLTable для родильской таблицы верхнего уровня. Этот объект XMLTable обозначает родительскую таблицу и обеспечивает доступ к единичному и окончательному результату операции объекдинения посредством использования метода ToCursor объекта XMLTable. Объекты XMLTable для дочерних таблиц связываются с родительской таблицей через свойства ChildTable и ParentTable. Однако, не существует пути, для получения данных из индивидуальных таблиц в цепочке иерархии. |
Смотрите также
Справочное руководство
Свойства, методы и события класса XMLAdapterКоллекция таблиц - Tables Collection (XMLAdapter)
Класс XMLTable
Коллекция полей - Fields Collection (XMLTable)
Класс XMLField
Метод LoadXML
Метод Attach (Visual FoxPro)
Метод ToCursor
Метод ReleaseXML
Метод ApplyDiffgram
Свойство XMLSchemaLocation