Как загрузить файл xml в программу объявлений
Обновлено: 21.11.2024
Основной способ загрузки XML-данных в Oracle XML DB — использование SQL*Loader.
36.1 Обзор загрузки данных XMLType в базу данных Oracle
Вы можете загружать данные XMLType с помощью SQL*Loader, используя обычный метод или метод прямого пути, независимо от того, как они хранятся (объектно-реляционное или двоичное хранилище XML).
Начиная с Oracle9 i версии 1 (9.0.1), утилита экспорта-импорта и SQL*Loader поддерживают XMLType в качестве типа столбца. Начиная с Oracle Database 10g, SQL*Loader также поддерживает загрузку таблиц XMLType.
Для объектно-реляционного хранения данных XML, если данные включают наследование (расширение или ограничение) типов схемы XML, SQL*Loader не поддерживает загрузку прямого пути.
То есть, если схема XML содержит элемент complexType, который расширяет или ограничивает другой элемент complexType (базовый тип), это приводит к тому, что некоторые типы SQL определяются в терминах других типов SQL. В этом случае загрузка по прямому пути не поддерживается для объектно-реляционного хранилища.
Информация репозитория Oracle XML DB не экспортируется при экспорте пользовательских данных. Ни ресурсы, ни какая-либо информация не экспортируются.
36.2 Загрузка данных XMLType с помощью SQL*Loader
SQL*Loader обрабатывает столбцы и таблицы XMLType как объектно-реляционные столбцы и таблицы. Все методы загрузки данных LOB из основного файла данных или из значения LOBFILE применимы также к загрузке столбцов и таблиц XMLType, когда данные XMLType хранятся как LOB.
Вы не можете указать строку SQL для полей LOB. Это верно, даже если вы укажете LOBFILE_spec .
Данные XMLType могут присутствовать в управляющем файле или в LOB-файле. В первом случае имя LOB-файла присутствует в управляющем файле.
Поскольку данные XMLType могут быть довольно большими, SQL*Loader может загружать данные больших объектов либо из основного файла данных (наравне с остальными данными), либо из файлов больших объектов, независимо от того, как хранятся данные (основное хранилище может , например, по-прежнему быть объектно-реляционным).
36.2.1 Загрузка данных LOB XMLType с помощью SQL*Loader
Для загрузки внутренних больших объектов, больших двоичных объектов (BLOB), больших объектов символов (CLOB) и больших объектов национальных символов (NCLOB) или столбцов и таблиц XMLType из основного файла данных используйте стандартные форматы SQL*Loader. р>
Поля заданного размера
Парные поля "длина-значение"
Эти форматы описаны в следующих разделах и более подробно в Oracle Database Utilities.
36.2.1.1 Загрузка данных LOB с использованием полей заданного размера
Поля заданного размера представляют собой очень быстрый и концептуально простой формат SQL*Loader для загрузки больших объектов.
Поскольку большие объекты, которые вы загружаете, могут быть разного размера, вы можете использовать пробелы для заполнения данных больших объектов, чтобы сделать все большие объекты одинаковой длины в определенном поле данных.
36.2.1.2 Загрузка данных LOB с использованием полей с разделителями
Формат полей с разделителями позволяет обрабатывать большие объекты разного размера в одном столбце (поле файла данных). Однако эта дополнительная гибкость может повлиять на производительность, поскольку SQL*Loader должен сканировать данные в поисках строки-разделителя.
Как и в случае односимвольных разделителей, при указании разделителей строк следует учитывать набор символов файла данных. Если набор символов файла данных отличается от набора символов управляющего файла, вы можете указать разделители в шестнадцатеричном формате (то есть шестнадцатеричной строке). Если разделители указаны в шестнадцатеричной системе счисления, то спецификация должна состоять из символов, допустимых в наборе символов входного файла данных. Напротив, если шестнадцатеричная спецификация не используется, считается, что спецификация разделителя находится в наборе символов клиента (то есть управляющего файла). В этом случае разделитель преобразуется в набор символов файла данных перед тем, как SQL*Loader ищет разделитель в файле данных.
36.2.1.3 Загрузка столбцов XML, содержащих данные LOB, из LOBFILE
LOB-данные могут быть достаточно длинными, поэтому имеет смысл загружать их из LOBFILE, а не из основного файла данных.
В файлах LOBFILE экземпляры данных LOB по-прежнему считаются находящимися в полях (заранее определенного размера, с разделителями, значением длины), но эти поля не организованы в записи (концепция записи не существует в LOBFILE). Таким образом, избегаются накладные расходы на обработку записей. Этот тип организации данных идеально подходит для загрузки больших объектов.
Не требуется, чтобы LOB из LOBFILE помещался в памяти. SQL*Loader считывает LOBFILE порциями по 64 КБ.
В LOBFILE данные могут находиться в любом из следующих типов полей, любое из которых можно использовать для загрузки столбцов XML:
Одно поле LOB, в которое можно прочитать все содержимое файла
Поля заданного размера (поля фиксированной длины)
Поля с разделителями (т. е. TERMINATED BY или ENCLOSED BY )
Предложение PRESERVE BLANKS не применимо к полям, считываемым из LOBFILE.
Поля пары "длина-значение" (поля переменной длины) .
Чтобы загрузить данные из поля этого типа, используйте типы данных VARRAY , VARCHAR или VARCHAR2 SQL*Loader.
36.2.1.4 Указание LOBFILE
Вы можете указать LOBFILE либо статически (вы указываете имя файла), либо динамически (вы используете поле FILLER в качестве источника имени файла).
В любом случае, когда достигается EOF LOBFILE, файл закрывается, а дополнительные попытки чтения данных из этого файла приводят к результатам, эквивалентным чтению данных из пустого поля.
Не следует указывать один и тот же LOBFILE в качестве источника двух разных полей. В этом случае два поля обычно считывают данные независимо друг от друга.
36.2.2 Загрузка данных XMLType непосредственно из контрольного файла с помощью SQL*Loader
Вы можете загружать данные XMLType непосредственно из управляющего файла. SQL*Loader обрабатывает данные XMLType как любой скалярный тип.
Например, рассмотрим таблицу, содержащую столбец NUMBER, за которым следует столбец XMLType, хранящийся объектно-реляционно. Управляющий файл, используемый для этой таблицы, может содержать значение столбца NUMBER, за которым следует значение экземпляра XMLType.
SQL*Loader поддерживает очень большие экземпляры XMLType. У вас также есть возможность загрузить такие данные из LOB-файла.
36.2.3 Загрузка больших XML-документов с помощью SQL*Loader
Вы можете использовать SQL*Loader для загрузки больших объемов данных XML в базу данных Oracle.
Список в файле данных, например, filelist.dat , местоположений загружаемых документов XML.
Создайте управляющий файл, например load_data.ctl , с командами, обрабатывающими файлы, перечисленные в файле данных.
Вызовите команду оболочки SQL*Loader, sqldr , передав ей имя управляющего файла.
Это показано в примере 36-1, примере 36-2 и примере 36-3. В файле filelist.dat перечислены XML-файлы, содержащие заказы на покупку за 2002 год.
Если ваше приложение использует индексы или ограничения, их обработка может повлиять на скорость загрузки. Вы можете временно отключить эту обработку с помощью подпрограмм PL/SQL disableIndexesAndConstraints и enableIndexesAndConstraints в пакете DBMS_XMLSTORAGE_MANAGE .
Oracle Database Utilities для получения информации о команде оболочки sqlldr
Справочник по пакетам и типам Oracle Database PL/SQL для получения информации о подпрограммах DBMS_XMLSTORAGE_MANAGE disableIndexesAndConstraints и enableIndexesAndConstraints
Если вы ранее создали карту XML, вы можете использовать ее для импорта данных XML в сопоставленные ячейки, но также существует несколько методов и команд для импорта данных XML без карты XML.
Если у вас есть карта XML, сделайте следующее, чтобы импортировать данные XML в сопоставленные ячейки:
На карте XML выберите одну из сопоставленных ячеек.
Нажмите "Разработчик" > "Импорт".
Если вы не видите вкладку "Разработчик", см. раздел Показать вкладку "Разработчик".
В диалоговом окне "Импорт XML" найдите и выберите файл данных XML (.xml), который вы хотите импортировать, и нажмите "Импорт".
Другие способы импорта XML-данных
Дополнительную информацию о проблемах см. в разделе Общие проблемы с импортом данных XML в конце этой статьи.
Импорт файла данных XML в виде таблицы XML
Нажмите "Разработчик" > "Импорт".
Если вы не видите вкладку "Разработчик", см. раздел Показать вкладку "Разработчик".
В диалоговом окне "Импорт XML" найдите и выберите файл данных XML (.xml), который вы хотите импортировать, и нажмите "Импорт".
Если файл данных XML не ссылается на схему, Excel выводит схему из файла данных XML.
В диалоговом окне "Импорт данных" выполните одно из следующих действий:
Выберите XML-таблицу на существующем рабочем листе, чтобы импортировать содержимое файла данных XML в XML-таблицу на вашем рабочем листе в указанной ячейке.
Выберите таблицу XML на новом листе, чтобы импортировать содержимое файла в таблицу XML на новом листе, начиная с ячейки A1. Схема файла данных XML отображается в области задач "Источник XML".
Если файл данных XML не ссылается на схему, Excel выводит схему из файла данных XML.
Чтобы управлять поведением XML-данных (например, привязкой данных, форматом и макетом), нажмите «Свойства», чтобы открыть диалоговое окно свойств XML-карты. Например, существующие данные в сопоставленном диапазоне будут перезаписаны при импорте данных по умолчанию, но это можно изменить.
Импорт нескольких файлов данных XML
Выберите сопоставленную ячейку, чтобы импортировать несколько XML-файлов в один набор сопоставленных ячеек.
Если вы хотите импортировать несколько XML-файлов в несколько наборов сопоставленных ячеек, щелкните ячейку в любом месте листа, которая не сопоставлена.
Нажмите "Разработчик" > "Импорт".
Если вы не видите вкладку "Разработчик", см. раздел Показать вкладку "Разработчик".
В диалоговом окне "Импорт XML" найдите и выберите файл данных XML (.xml), который вы хотите импортировать.
Если файлы расположены рядом, нажмите клавишу Shift и щелкните первый и последний файлы в списке. Все данные из XML-файлов будут импортированы и добавлены к сопоставленным ячейкам.
Если файлы не являются смежными, нажмите и удерживайте клавишу Ctrl и щелкните каждый файл, который вы хотите импортировать, в списке.
Нажмите «Импорт».
Если вы выбрали файлы, которые не являются смежными, появится диалоговое окно Импорт .xml. Выберите карту XML, соответствующую файлу данных XML, который вы импортируете для каждого файла.
Чтобы использовать одну карту для всех выбранных файлов, которые еще не импортированы, выберите Использовать эту карту XML для всех выбранных файлов этой схемы.
Импорт нескольких файлов данных XML в качестве внешних данных
Чтобы импортировать несколько XML-файлов, использующих одно и то же пространство имен, но разные XML-схемы, можно использовать команду «Импорт данных из XML». Excel создает уникальную карту XML для каждого импортируемого файла данных XML.
Примечание. Если вы импортируете несколько XML-файлов, не определяющих пространство имен, эти XML-файлы обрабатываются так, как если бы они использовали одно и то же пространство имен.
Если вы используете Excel с подпиской на Microsoft 365, нажмите Данные > Получить данные > Из файла > Из XML.
Если вы используете Excel 2016 или более раннюю версию, нажмите Данные > Из других источников > Импорт данных XML.
Перейдите к диску, папке или местоположению в Интернете, где находится файл данных XML (.xml), который вы хотите импортировать.
Выберите файл и нажмите «Открыть».
В диалоговом окне "Импорт данных" выполните одно из следующих действий:
Таблица XML на существующем рабочем листе Содержимое файла импортируется в новую таблицу XML на новом рабочем листе. Если файл данных XML не ссылается на схему, Excel выводит схему из файла данных XML.
Существующий рабочий лист XML-данные импортируются в двумерную таблицу со строками и столбцами, в которой XML-теги отображаются в виде заголовков столбцов, а данные — в строках под заголовками столбцов. Первый элемент (корневой узел) используется как заголовок и отображается в указанной ячейке. Остальные теги отсортированы по алфавиту во второй строке. В этом случае Excel не выводит схему, и вы не можете использовать карту XML.
Новый рабочий лист Excel добавит новый рабочий лист в вашу рабочую книгу и автоматически поместит XML-данные в левый верхний угол нового рабочего листа. Если файл данных XML не ссылается на схему, Excel выводит схему из файла данных XML.
Чтобы управлять поведением XML-данных, например привязкой данных, форматом и макетом, нажмите «Свойства», чтобы открыть диалоговое окно свойств XML-карты. Например, существующие данные в сопоставленном диапазоне перезаписываются при импорте данных по умолчанию, но это можно изменить.
Откройте файл данных XML, чтобы импортировать его данные
Нажмите «Файл» > «Открыть».
Если вы используете Excel 2007, нажмите кнопку Microsoft Office > Открыть.
В диалоговом окне "Открыть" выберите диск, папку или место в Интернете, где находится файл, который вы хотите открыть.
Выберите файл и нажмите «Открыть».
Если появится диалоговое окно «Импорт XML», открытый файл ссылается на одну или несколько таблиц стилей Extensible Stylesheet Language Transformation (XSLT), поэтому вы можете выбрать один из следующих вариантов:
Откройте файл, не применяя таблицу стилей. XML-данные импортируются в двумерную таблицу со строками и столбцами, в которой XML-теги отображаются в виде заголовков столбцов, а данные — в строках под заголовками столбцов. Первый элемент (корневой узел) используется как заголовок и отображается в указанной ячейке. Остальные теги отсортированы по алфавиту во второй строке. В этом случае Excel не выводит схему, и вы не можете использовать карту XML.
Откройте файл со следующей примененной таблицей стилей (выберите одну) Выберите таблицу стилей, которую вы хотите применить, и нажмите OK. Данные XML форматируются в соответствии с выбранной вами таблицей стилей.
Примечание. XML-данные открываются в Excel только для чтения, чтобы вы случайно не сохранили исходный файл в формате файла книги Excel с поддержкой макросов (.xlsm). В этом случае Excel не выводит схему, и вы не можете использовать карту XML.
Если появится диалоговое окно Open XML, XML-файл не содержит ссылок на таблицы стилей XSLT. Чтобы открыть файл, выберите один из следующих вариантов:
Нажмите Как таблица XML, чтобы создать таблицу XML в новой книге.
Содержимое файла импортируется в таблицу XML. Если файл данных XML не ссылается на схему, Excel выводит схему из файла данных XML.
Нажмите Как книга только для чтения.
Данные XML импортируются в двумерную таблицу со строками и столбцами, в которой XML-теги отображаются в виде заголовков столбцов, а данные — в строках под заголовками столбцов. Первый элемент (корневой узел) используется как заголовок и отображается в указанной ячейке. Остальные теги отсортированы по алфавиту во второй строке. В этом случае Excel не выводит схему, и вы не можете использовать карту XML.
Данные XML открываются в Excel только для чтения, чтобы вы случайно не сохранили исходный файл в формате файла книги Excel с поддержкой макросов (.xlsm). В этом случае Excel не выводит схему, и вы не можете использовать карту XML.
Нажмите "Использовать область задач источника XML".
Схема файла данных XML отображается в области задач "Источник XML". Затем вы можете перетащить элементы схемы на рабочий лист, чтобы сопоставить эти элементы с рабочим листом.
Если файл данных XML не ссылается на схему, Excel выводит схему из файла данных XML.
Распространенные проблемы с импортом XML-данных
Excel отображает диалоговое окно "Ошибка импорта XML", если не может проверить данные в соответствии с картой XML. В этом диалоговом окне щелкните Подробности для получения дополнительных сведений о каждой ошибке. В следующей таблице перечислены некоторые распространенные ошибки импорта:
Что произошло
Ошибка проверки схемы
Когда вы щелкнули Проверить данные по схеме для импорта и экспорта в диалоговом окне Свойства карты XML, данные были импортированы, но не были проверены на соответствие указанной карте XML.
Некоторые данные были импортированы в виде текста
Некоторые или все импортированные вами данные были преобразованы из заявленного типа данных в текст. Чтобы использовать эти данные в расчетах, вам необходимо преобразовать данные из текста в числа или даты. Например, значение даты, преобразованное в текст, не будет работать должным образом в функции YEAR, пока вы не преобразуете его в тип данных Date. Excel преобразует данные в текст, когда:
Данные представлены в формате, который Excel не поддерживает.
Данные несовместимы с внутренним представлением Excel типа данных XSD. Чтобы решить эту проблему, проверьте каждое объявление типа данных, чтобы убедиться, что ваши данные XML допустимы в соответствии со схемой XML.
Ошибка синтаксического анализа XML
Синтаксический анализатор XML не может открыть указанный файл XML. Убедитесь, что в файле XML нет синтаксических ошибок и что XML правильно сформирован.
Не удается найти карту XML, соответствующую данным
Эта проблема может возникнуть, если вы выбираете для импорта несколько файлов данных XML, а Excel не может найти соответствующую карту XML для одного из файлов. Для файла, указанного в строке заголовка диалогового окна, сначала импортируйте соответствующую схему, а затем повторите попытку импорта файла.
Размер XML-таблицы нельзя изменить для размещения данных
Вы пытаетесь добавить строки, импортируя или добавляя данные в XML-таблицу, но в таблице нет места для расширения. Таблица XML может расширяться только снизу вниз. Например, может быть объект, такой как изображение или другая таблица, непосредственно под таблицей XML, который препятствует расширению таблицы XML. Или для расширения XML-таблицы будет превышено ограничение на количество строк Excel, равное 1 048 576. Чтобы решить эту проблему, измените порядок таблиц и объектов на листе, чтобы таблица XML расширялась снизу вниз.
Указанный файл XML не ссылается на схему
Файл XML, который вы пытаетесь открыть, не относится к схеме XML. Для работы с XML-данными в файле Excel требуется схема, основанная на содержимом XML-файла. Если эта схема неверна или недостаточна, удалите ее из книги. Затем создайте файл схемы XML и отредактируйте файл данных XML, чтобы файл данных XML ссылался на схему. Дополнительные сведения см. в разделе Сопоставление элементов XML с ячейками на карте XML.
Примечание. Выведенную схему Excel нельзя экспортировать в виде отдельного файла данных схемы XML (.xsd). Хотя существуют редакторы схемы XML и другие методы создания файла схемы XML, вы можете не иметь к ним удобного доступа или не знать, как их использовать.
Выполните следующие действия, чтобы удалить схему, созданную Excel, из вашей книги:
Нажмите "Разработчик" > "Источник".
Если вы не видите вкладку "Разработчик", см. раздел Показать вкладку "Разработчик".
На панели задач "Источник XML" нажмите "Карты XML".
В диалоговом окне "Карты XML" щелкните созданную карту XML в формате Excel и нажмите "Удалить".
Импорт нескольких XML-файлов, использующих одно и то же пространство имен, но разные схемы, не работает должным образом
При работе с несколькими файлами данных XML и схемами XML вы обычно создаете карту XML для каждой схемы, сопоставляете нужные элементы, а затем импортируете каждый файл данных XML в соответствующую карту XML. Используя команду «Импорт» для открытия нескольких XML-файлов с одним и тем же пространством имен, вы можете использовать только одну XML-схему. Когда вы используете эту команду для открытия нескольких XML-файлов, использующих одно и то же пространство имен, но разные схемы, вы можете получить неожиданные результаты. Например, данные могут быть перезаписаны или файлы не будут открываться.
Чтобы импортировать несколько XML-файлов, использующих одно и то же пространство имен, но разные XML-схемы, попробуйте использовать команду «Импорт данных из XML» (щелкните «Данные» > «Из других источников»).Эта команда позволяет нескольким файлам XML с одним и тем же пространством имен использовать несколько схем XML. Excel создает уникальную карту XML для каждого файла данных XML, который вы хотите импортировать.
Примечание. Если вы импортируете несколько XML-файлов, не определяющих пространство имен, эти XML-файлы обрабатываются так, как если бы они использовали одно и то же пространство имен.
Показать вкладку "Разработчик"
Если вы не видите вкладку "Разработчик", сделайте следующее, чтобы отобразить ее:
В Excel 2013 и Excel 2010:
Нажмите "Файл" > "Параметры".
Нажмите на категорию "Настроить ленту".
В разделе "Основные вкладки" установите флажок "Разработчик" и нажмите "ОК".
Нажмите кнопку Microsoft Office > Параметры Excel.
Нажмите на категорию «Популярные».
В разделе "Верхние параметры работы с Excel" установите флажок "Показать вкладку "Разработчик"" на ленте и нажмите "ОК".
Создать новый проект
Создать файл XML для чтения в наборе данных
Поскольку в этом пошаговом руководстве основное внимание уделяется считыванию XML-данных в набор данных, предоставляется содержимое XML-файла.
В меню "Проект" выберите "Добавить новый элемент".
Выберите XML-файл, назовите файл author.xml и нажмите кнопку Добавить.
Файл XML загружается в конструктор и готов к редактированию.
Вставьте следующие данные XML в редактор под объявлением XML:
В меню "Файл" выберите "Сохранить author.xml".
Создать пользовательский интерфейс
Пользовательский интерфейс этого приложения состоит из следующего:
Элемент управления DataGridView, отображающий содержимое XML-файла в виде данных.
Элемент управления TextBox, отображающий схему XML для XML-файла.
Одна кнопка считывает файл XML в набор данных и отображает его в элементе управления DataGridView.
Вторая кнопка извлекает схему из набора данных и с помощью StringWriter отображает ее в элементе управления TextBox.
Чтобы добавить элементы управления в форму
Откройте форму Form1 в режиме конструктора.
Из панели инструментов перетащите на форму следующие элементы управления:
Установите следующие свойства:
Создайте набор данных, который получает данные XML
На этом шаге вы создаете новый набор данных с именем авторов . Дополнительные сведения о наборах данных см. в разделе Инструменты набора данных в Visual Studio.
В обозревателе решений выберите исходный файл для формы Form1, а затем нажмите кнопку View Designer на панели инструментов обозревателя решений.
На панели инструментов, вкладка "Данные", перетащите набор данных на форму Form1.
В диалоговом окне "Добавить набор данных" выберите "Нетипизированный набор данных", а затем нажмите кнопку "ОК".
DataSet1 добавляется на панель компонентов.
В окне "Свойства" задайте свойства Name и DataSetName для AuthorsDataSet .
Создайте обработчик событий для чтения XML-файла в набор данных
Кнопка «Читать XML» считывает файл XML в набор данных. Затем он устанавливает свойства элемента управления DataGridView, которые связывают его с набором данных.
В обозревателе решений выберите Form1, а затем нажмите кнопку View Designer на панели инструментов обозревателя решений.
Нажмите кнопку "Читать XML".
Редактор кода открывается в обработчике события ReadXmlButton_Click.
Введите следующий код в обработчик события ReadXmlButton_Click:
В коде обработчика события ReadXMLButton_Click измените запись filepath = на правильный путь.
Создайте обработчик событий для отображения схемы в текстовом поле
Кнопка Show Schema создает объект StringWriter, который заполняется схемой и отображается в элементе управления TextBox.
В обозревателе решений выберите Form1, а затем нажмите кнопку View Designer.
Нажмите кнопку "Показать схему".
Редактор кода открывается в обработчике события ShowSchemaButton_Click.
Вставьте следующий код в обработчик событий ShowSchemaButton_Click.
Проверить форму
Теперь вы можете протестировать форму, чтобы убедиться, что она работает должным образом.
Нажмите F5, чтобы запустить приложение.
Нажмите кнопку "Читать XML".
DataGridView отображает содержимое файла XML.
Нажмите кнопку "Показать схему".
В текстовом поле отображается схема XML для файла XML.
Дальнейшие шаги
Это пошаговое руководство научит вас основам чтения XML-файла в набор данных, а также созданию схемы на основе содержимого XML-файла. Вот некоторые задачи, которые вы можете выполнить дальше:
Отредактируйте данные в наборе данных и запишите их обратно в формате XML. Дополнительные сведения см. в разделе WriteXml.
Иногда вам может понадобиться проанализировать содержимое XML и преобразовать его в дерево DOM или, наоборот, сериализовать существующее дерево DOM в XML. В этой статье мы рассмотрим объекты, предоставляемые веб-платформой, чтобы упростить стандартные задачи сериализации и синтаксического анализа XML.
Сериализует деревья DOM, преобразовывая их в строки, содержащие XML.
Создает дерево DOM, анализируя строку, содержащую XML, и возвращая XMLDocument или Document в зависимости от входных данных.
Загружает контент с URL-адреса; Содержимое XML возвращается в виде объекта XML-документа с деревом DOM, построенным из самого XML.
Технология создания строк, содержащих адреса определенных частей документа XML, и поиска узлов XML на основе этих адресов.
Создание XML-документа
Используя один из следующих подходов для создания XML-документа (который является экземпляром Document .
Синтаксический анализ строк в деревья DOM
В этом примере фрагмент XML в строке преобразуется в дерево DOM с помощью DOMParser :
Синтаксический анализ ресурсов с URL-адресацией в деревья DOM
Вот пример кода, который считывает и анализирует XML-файл с URL-адресацией в дерево DOM:
Значение, возвращаемое в поле responseXML объекта xhr, представляет собой документ, созданный путем синтаксического анализа XML.
Если документ HTML, показанный выше код вернет Document . Если документ представляет собой XML, результирующий объект на самом деле является XMLDocument. Эти два типа по существу одинаковы; разница во многом носит исторический характер, хотя дифференциация имеет и некоторые практические преимущества.
Примечание. На самом деле интерфейс HTMLDocument тоже существует, но это не обязательно независимый тип. В некоторых браузерах это так, а в других это псевдоним интерфейса документа.
Сериализация документа XML
Для Document вы можете сериализовать дерево DOM документа обратно в XML, используя метод XMLSerializer.serializeToString().
Используйте следующие подходы для сериализации содержимого XML-документа, созданного в предыдущем разделе.
Сериализация деревьев DOM в строки
Чтобы сериализовать документ дерева DOM в текст XML, вызовите XMLSerializer.serializeToString() :
Сериализация HTML-документов
Если у вас есть DOM в виде HTML-документа, вы можете сериализовать с помощью serializeToString() , но есть и более простой вариант: просто используйте свойство Element.innerHTML (если вам нужны только потомки указанного узла) или свойство Element .outerHTML, если вам нужен узел и все его потомки.
В результате docInnerHtml представляет собой DOMString, содержащую HTML-код содержимого документа; то есть содержимое элемента.
Вы можете получить HTML, соответствующий и его потомкам, с помощью этого кода:
Content Syncer работает не только с базами данных; вы можете использовать файлы CSV и XML в качестве источника. Импорт XML поддерживает RSS, и вы также можете использовать CDATA.
Это шаги, которые необходимо выполнить при создании файла XML для синхронизации с Terminalfour.
Начиная с Terminalfour v.8.2.1, драйвер XML включен в продукт, поэтому нет необходимости устанавливать дополнительный драйвер.
Обратитесь в службу поддержки, если вам нужна консультация по этому вопросу.
1. Скопируйте файл XML на свой сервер CMS
Скопируйте файл XML на сервер CMS, например:
Если ваш файл XML расположен на другом сервере, убедитесь, что он доступен для CMS.
2. Настройте источник данных
Чтобы настроить источник данных, вы должны назвать его и указать расположение файлов и драйверов.
Перейдите в раздел Администрирование системы > Настройка инструментов интеграции > Источники данных и заполните поля.
URI в кодировке URL, по которому доступен файл XML.
Это должно быть место, доступное для CMS.
Это может указывать либо на сам файл, либо на внешний адрес, по которому можно найти файл.
Правильный префикс, соответствующий драйверу XML, должен использоваться перед URI.
Это необходимо.
Если указан один файл курса data.xml на сервере Linux:
jdbc:xmlservice:file:///path/to/directory/course%20data.xml
Если указан один файл курса data.xml на сервере Windows:
jdbc:xmlservice:file:///c:/path/to/directory/course%20data.xml
3. Создайте тип контента (если требуется)
Если вы еще не создали тип контента, вам потребуется создать тип контента для внешнего синхронизатора контента, чтобы хранить информацию, которая в данный момент находится в XML-файле. Например, мы можем создать тип контента «Сведения о курсе» со следующими элементами:
Имя элемента | Тип элемента |
---|---|
ID | Обычный текст |
Имя | Обычный текст |
Факультет | td>Обычный текст |
Лектор | Обычный текст |
Награда | Обычный текст |
4. Настройка синхронизации контента
После успешной настройки XML в качестве источника данных содержимое извлекается с помощью SQL (язык структурированных запросов). Чтобы добавить SQL, перейдите в раздел Администрирование системы > Настройка инструментов интеграции > Внешний синхронизатор содержимого.
Подробнее об общих настройках External Content Syncer см. на странице документации.
Выберите «Создать новое хранилище данных» и примените следующие настройки:
При необходимости настройте другие параметры (дополнительную информацию см. в документации по External Content Syncer)
SQL-запрос
Добавьте сюда SQL, чтобы выбрать контент для синхронизации.
Прежде чем создавать операторы SQL, необходимо знать следующее:
- в предложении FROM используется имя элемента XML, а не имя таблицы
- т. е., чтобы вернуть все содержимое курса из элемента с именем "курс", используйте SELECT * FROM course
- ВЫБОР * ИЗ курса или ВЫБЕРИТЕ имя ИЗ курса будут работать оба варианта
- ВЫБЕРИТЕ идентификатор, имя ИЗ курса не будет
Использование SQL
Вот пример XML-файла:
вернет следующее:
идентификатор название факультет лектор награда CR145 Бизнес и право Бизнес Проф. Сара Коннорс BBL CR468 Философия Гуманитарные науки Dr. Стив Питерс BA CDATA
В этом примере в названиях курсов используются разделы CDATA, чтобы предотвратить синтаксический анализ объектов:
Чтобы декодировать объект HTML, используйте ключевое слово DECODE:
Элементы даты
Если столбец имеет настраиваемый формат даты, драйвер может обеспечить это с помощью настраиваемых ключевых слов DATE_ELEMENT и DATE_FORMAT.
В поле DATE_FORMAT введите формат даты в файле XML (дополнительную информацию см. на нашей странице о форматах даты). Например:
ВЫБЕРИТЕ pubDate ИЗ курса DATE_ELEMENT pubDate DATE_FORMAT "EEE, dd MMM yyyy HH:mm:ss"
Повторяющиеся имена элементов
Следующий XML содержит два элемента с одинаковыми именами ( x-trumba ) и пространством имен ( customfield ):
Пространства имен в вашем XML должны быть объявлены. В этом случае элементы с пространствами имен генерируются программным обеспечением календаря событий Trumba, а корневой элемент (каталог) содержит ссылку на XML-схему. Ваш источник данных не сможет успешно подключиться к источнику XML с пространствами имен, которые не содержат объявления пространства имен. Ссылка на схему пространства имен не должна разрешаться.
Поскольку имена столбцов должны быть уникальными, вы можете использовать пользовательское ключевое слово DUPLICATE_COLUMN_IDENTIFIER, чтобы назвать столбец со значением указанного значения атрибута. В данном случае это атрибут имени со значением «Заголовок события»:
При сопоставлении типов вы можете ввести x-trumba:customfield в качестве имени столбца таблицы
При запуске синхронизации выводится следующее:
С помощью DUPLICATE_COLUMN_IDENTIFIER мы можем выбрать один элемент, который имеет дубликаты, на основе значения атрибута в этом элементе.
Дублировать добавление столбца
Возможно, вы захотите, чтобы возвращалось несколько дубликатов, и в этом случае вы можете использовать ключевое слово DUPLICATE_COLUMN_APPENDER, чтобы обеспечить большую гибкость. Помимо возврата содержимого нескольких повторяющихся элементов, мы также можем возвращать значения атрибутов.
Если вы не уверены в значении атрибута, но знаете позицию дубликата, который хотите использовать, к имени столбца таблицы добавляется индекс. Вот оператор SQL:
К имени столбца таблицы, который можно сопоставить, добавляется порядковый номер. В данном случае мы просто ищем второй дубликат:
Это возвращает следующее:
Итак, не зная значения атрибута, мы вернули содержимое элемента на основе его положения.Мы не ограничиваемся одним сопоставлением типов:
Если вы знаете значение атрибута, вы можете изменить запрос:
Возможно, вы заметили, что пробел был удален из поля "Тип события" в названии столбца таблицы. Это необходимо для его работы.
Возврат значений атрибутов
Вы также можете вернуть значения из атрибутов. В этом примере используется индекс, а знак доллара и имя атрибута добавляются к имени столбца таблицы после использования этого запроса:
Читайте также: