Преобразует XML-текст в курсор или таблицу Visual FoxPro.
Синтаксис функции приведен ниже:
XMLTOCURSOR(eExpression | cXMLFile [, cCursorName [, nFlags ]])
Параметры:
eExpression
Указывает XML текст или выражение, которое может быть оценено как действительные XML данные. Параметр eExpression может представлять собой переменную памяти Visual FoxPro, содержимым memo-поля, выражением, возвращенным запросом HTTP, результатом возврата вызова метода SOAP, XML, получаем из XMLDOM или потоком ADO.
cXMLFile
Указывает имя и, дополнительно, путь физического XML-файла, который распололагается на вашем локальном компьютере или в сети.
Если вы не укажите путь, Visual FoxPro ищет XML-файл по каталогу Visual FoxPro.
cCursorName
Указывает имя курсора, в котором будет сохранен результат и который будет создан в текущей рабочей области.
Если имя курсора уже имеется или он открыт, Visual FoxPro закрывает курсор и создает его заново в неиспользуемом рабочей области. Если вы опустите этот параметр или передадите в его качестве пустую строку (""), Visual FoxPro создаст курсор с именем "XMLRESULT", в котором будет размещен результат преобразования.
Если курсор с именем cCursorName содержит данные, а nFlags установлен в 8192, Visual FoxPro добавит в курсор данные, импортированные из XML файла. Таблица или курсор, для такого случая должны быть открыты или использоваться. При такой установке nFlags, если cCursorName содержит пустую строку (""), Visual FoxPro импортирует XML в таблицу или курсор, открытые в текущей рабочей области.
nFlags
Определяет, как XMLSource eExpression обрабатывается функцией XMLTOCURSOR( ). В приведенной ниже таблице описаны значения, используемые для составления параметра nFlags.
nFlags | Описание |
0 |
(по умолчанию) Рассматривает первый параметр, как строку, содержащую XML данные. |
4 |
Сохраняет пробелы в данных и не принимает во внимание аттрибута xml:space в XML данных. |
512 |
Определяет, что первый параметр, будь это eExpression или cXMLFile, как строку, содержащую имя и путь к файлу с XML данными. |
1024 |
NOCPTRANS – Создает в результирующем курсоре поля типов Character и Memo с опцией NOCPTRANS и вставляет текст или XML значения в поля типов Character или Memo не транслируя их, но основку "байт за байтом".
При использовании с флагом 1024, XMLTOCURSOR( ) возвращает строку, дополненную хвостовыми пробелами, числом равным реальной длине строки, вследствие чего используется строка двойной длины. |
2048 |
Используется, когда импортируемая XML схема имеет в (XSD) схеме определение, содержащее десятичный тип данных с ограничением, или фасеты totalDigits="19" и fractionDigits="4."
Такие значения XSD типов данных размечаются в тип данных Currency в результирующем курсоре Visual FoxPro.
|
4096 |
Запрещает base64-декодирование. В Visual FoxPro, base64-декодирование включено для декодирования только бинарных данных. |
8192 |
Указывает, что cCursorName представляет собой имя или псевдоимя (alias) существующей таблицы или курсора и импортирует данные из указанного XML файла в существующую таблицу или заранее созданный курсор. Если курсор/таблица с именем cCursorName уже содержат данные, то импортируемые из XML файла данные добавляются к существующим. Если cCursorName представляет собой пустую строку (""), данные из XML файла импортируются в таблицу или курсор, открытые в текущей рабочей области. Установка nFlags в значение 8192 может быть полезной, когда XML схема недоступна или не подходит для использования. |
32768 |
Указывает, что должна быть использована кодовая страница.
|
65536 |
Размечает поля Char XML к "родным полям" Varchar Visual FoxPro. Если флаг не указан, то этот тип данных XML размечается к типу данных Character Visual FoxPro. |
131072 |
Размечает поля XML base64Binary к "родным полям" Varbinary Visual FoxPro, если длина данных меньше 255 байт, или к полям Blob, если длина данных больше этого значения. Если этот флаг не указан, поля XML base64Binary размечаются к полям Memo Visual FoxPro. |
При использовании флага 8192, отдавайте себе отчет в следующем:
- Вы должны убедиться, что схема таблица соответствует дополняемым данным, получаемым из XML элементов в соответствующей манере. Visual FoxPro навязывает типы данных cCursorName как описано в таблице Data Type Matching table в этой статье, но не делает прочих допущений о типах данных. Попытка импортировать несовместимые значения будет генерировать соответствующее сообщение.
- Если XML содержит схему или ссылается на нее, а типы данных в схему конфликтуют с типами данных таблицы или курсора, то будут использоваться типы данных таблицы или курсора, но не типы данных XML.
- Имена элементов в файле XML размечаются в имена колонок в cCursorName. Дополнительно, Visual FoxPro импортирует только данные из имен элементов в файле XML, которые соответствуют именам колонок в существующем курсоре или таблице, определяемыми значением cCusorName.
- Курсор или таблица могут иметь больше колонок, чем элементы, описанные в XML файле, но они должны имет по крайней мере одно соответстветствие с именем колонки. Курсор или таблица могут иметь дополнительные колонки, которые не имеют соответствия с элементами в файле XML.
- Если таблица содержит поля типа autoincrement, XMLTOCURSOR( ) вызовет сбой, если AUTOINCERROR установлен в ON. Установка AUTOINCERROR в OFF или выключение автоувеличения в целевой таблице с помощью функции CURSORSETPROP( ) позволяют XMLTOCURSOR( ) исполнить конверсию. Поле или поля типа autoincrement в целевой таблице получат автоувеличение в соответствии с указанными величинвми, в значения в исходных данных не будут скопированы.
Приведенная ниже таблица описывает ограничения соответствий типов данных при установке флана nFlags в значение, равное 8192.
Типы данных VFP | Поведение |
Character, Character (Binary), Memo, Memo (Binary) |
Акцептирует любые данные, но обрезает их по длине, если она превышает размер колонки Character. |
Currency |
Акцептирует численные данные внутри допустимого диапазона, определяемого знаяениями типа данных Currency, но обрезает числа, выходящие за границы этого диапазона. |
Date |
Акцептирует форматы date и dateTime XML значений. Visual FoxPro преобразует форматы XML в соответствующие форматы дат и времени Visual FoxPro. Visual FoxPro сохраняет только M/D/Y порцию значений XML date или dateTime. |
DateTime |
Акцептирует формат date и dateTime XML данных.
Visual FoxPro преобразует XML date и dateTime форматы в соответствующие Visual FoxPro date и сбрасывает точность, не поддерживаемую Visual FoxPro. |
Double |
Акцептирует численные данные внутри указанного дропустимого диапазона типов Double, но обрезает числа, выходящие за пределы этого диапазона. |
Integer |
Акцептирует целочисленные данные внутри допустимого диапазона полей типа Integer, но обрезает числа, выходящие за пределы этого диапазона. |
Logical |
Акцептирует значения True, .T., 1, False, .F., и 0.
|
Numeric, Float
|
Акцептирует численные данные с или без десятичной частью, но обрезает числа, выходяшие за пределы допустимого диапазона для этих типоа в соответствии с правиласми Visual FoxPro или замещает численное переполнение индикатором переполнения ("*************").
|
Возвращаемое значение
Численный тип данных. XMLTOCURSOR( ) возвращает число созданных записей.
|