Как файл dbf преобразовать в xml

Обновлено: 07.07.2024

Вопрос действительно интересный! :-) Схема получения dbf-таблиц могла бы быть следующей:

  1. получение xml- данных из xls- файла
  2. преобразование полученных xml- данных в структуру, пригодную для преобразований в связанные dbf- файлы
  3. ну и собственно преобразование xml- данных в dbf -таблицы, используя VFP- класс XMLAdapter

Первый шаг может быть выполнен достаточно просто, если вы имеет Excel из MS Office 2003 (или выше). Чтобы выполнить второй шаг, на мой взгляд, проще всего воспользоваться технологией XSLT -преобразований, для чего следует хотя бы в общих чертах иметь представление об этой технологии. Другие пути для выполнения преобразований над xml -данными в использовании xml -парсеров и объектной модели DOM , также возможно написание кода обработки с использованием SAX2 . Если у вас большие объёмы данных, то последнее выглядит наиболее предпочтительным. Наконец, чтобы воспользоваться VFP- классом XMLAdapter , появившемся в версии 8.0 , вы должны быть обладателем именно версии VFP 9 .0 (или выше), т.к. в перелагаемом в этой статье VFP- коде, используется свойство XMLField.XMLNameIsXPath . Ниже предполагается, что все перечисленные условия удовлетворены.

Итак, попробуем пройти все шаги, разбирая конкретный пример данных в MS Excel 2003. Допустим, что требуется получить dbf- таблицы для данных, которые в MS Excel выглядят так:


Представленная таблица имеет "заголовок таблицы" (строки: 3-6), со строк: 7, 15, . начинаются группы, а со строк: 8,13;16. начинаются соответствующие подгруппы. Каждая подгруппа помимо своего "заголовка" (строки: 8, 13, 16, . ), имеет некоторое множество строк - "содержания подгруппы" (строки: 9-12,14,17-20, . ).

По этим данным, требуется получить три VFP- таблицы связанные отношениями:

  • для заголовков групп (назовём её group ),
  • для заголовков подгрупп (назовём её subgroup )
  • и наконец, для данных подгрупп (назовём её cells )

Экспорт данных Excel- таблицы в xml- файл

Как было сказано выше, для этого средствами MS Excel 2003 (или выше), выделив соответствующую таблицу ( из файла: table.xls) , выполним пункт меню: Файл/Сохранить как. [ Другие форматы/Тип файла: Таблица XML 2003 ] .


при этом, на возникший запрос о несоответствии формата следует ответить утвердительно. После чего мы получим файл с данными таблицы в xml- формате примерно такой структуры:

здесь незначимая для нас информация упущена и оставлено только то, что нам необходимо для дальнейшей работы. Обратите внимание на следующие моменты:

  • корневой элемент имеет "область имён" ( namespace ) "по умолчанию": xmlns="urn:schemas-microsoft-com:office:spreadsheet" .
  • собственно "сами данные" располагаются в элементах: /.//Workbook/Worksheet/Table/Row , а точнее в /.//Workbook/Worksheet/Table/Row/Cell/Data , в то время как значение атрибута ss:StyleID="s. " у элемента Cell позволяет достаточно чётко различать функциональную особенность данных элемента.

Удаление "области имён по умолчанию"

К сожалению, наличие "области имён по умолчанию" делает невозможным использование таких средств как XSLT -преобразования. Поэтому первым шагом на нашем пути, удалим xmlns="urn:schemas-microsoft-com:office:spreadsheet" из корневого элемента Workbook , а полученный после такого редактирования файл сохраним с новым именем (из _table.xml в table.xml в нашем случае).

Признаки отбора "прикладных данных"

Относительно "признаков выбора", требуемых нам "прикладных данных", глядя на содержимое полученного xml- файла, можно заметить следующее:

  • информация "о группах" располагается в таких элементах /.//Workbook/Worksheet/Table/Row/Cell/Data , у которых для элемента Cell атрибут ss:StyleID="s43"
  • в свою очередь, признаком выбора информации "о подгруппах" является значение этого атрибута ss:StyleID="s44"
  • наконец, элемент Row тогда содержит множество ячеек Cell содержащих "данные подгруппы", если среди них есть элемент Cell с атрибутом ss:StyleID="s42"

Далее, мы постараемся воспользоваться этими обстоятельствами, чтобы организовать обработку данных с помощью XSLT- преобразования.

XSLT- преобразование из "плоского" XML в "структурированный", согласно группировки данных

Чтобы обеспечить это, воспользуемся перебором всего множества элементов из /.//Workbook/Worksheet/Table/Row с помощью XSLT -конструкции: <xsl:for-each> , организуя требуемую вложенность элементов их "динамическим формированием" в выходной поток. Что же конкретно нам нужно? Попробуем сформулировать:

  • всякий раз, когда "на входе" встречается элемент Row , содержащий в себе элемент Cell с атрибутом ss:StyleID="s43", нам нужно "организовать начало новой группы" (закрыв прежде открытую, если такая имеется, естественно). В качестве имени для такого группового элемент возьмём название group.
  • в рамках групп, организованных с помощью предыдущего пункта, при обнаружении "на входе" в текущем Row элемента Cell с атрибутом ss:StyleID="s44", нам следует организовать начало новой вложенной подгруппу (закрыв аналогичную предшествующую, если такая имеется). В качестве имени элемента для подгруппы возьмём subgroup.
  • по завершению цикла обработки всего множества элементов Row мы должны закрыть как подгруппу subgroup так и группу group , если они не были ещё закрыты.

Здесь предполагается, что во входном потоке отсутствуют "разрывы" в смысле групп/подгрупп. Т.е. данные во входном потоке упорядочены в строгом соответствии с требованиями группировок, а также и то, что во входном потоке нет данных, не принадлежащих ни группам, ни их подгруппам. Основная трудность в реализации этой схемы заключается в проверке условий на момент открытия новой группы/подгруппы, позволяющих ответить на вопрос: а есть ли ранее открытые аналогичные группы/подгруппы, которые следует закрыть при открытии новых?

DBF Converter - это небольшое и надежное приложение, которое позволяет вам легко конвертировать файлы DBF в широкий спектр форматов. Формат DBF используется различными приложениями, включая приложения Delphi, FoxPro, dBase и многие другие.

Из-за того, что формат файла DBF не предназначен для повседневного использования, вы не можете использовать файлы с другими приложениями. DBF Converter предлагает вам возможность использовать ваши данные в самых разных приложениях баз данных, что повышает универсальность вашей компании и повышает производительность. Используя этот инструмент, вы сможете легко публиковать данные DBF в Интернете, преобразовывать файлы DBF для использования в базе данных SQL и выполнять множество других полезных операций.

DBF Converter также включает мощные возможности фильтрации данных, которые позволяют применять широкий спектр пользовательских масок и правил фильтрации и наблюдать за изменениями файлов в режиме реального времени в соответствии с вашими потребностями. Более того, программа позволяет вам конвертировать несколько файлов DBF одновременно, чтобы сэкономить драгоценное время и улучшить рабочий процесс. Процесс преобразования останется быстрым и точным благодаря низкоуровневому доступу программы к вашим данным.

DBF Converter позволяет конвертировать ваши файлы DBF в широкий спектр форматов, включая XLSX, XML, TXT, HTML, XLS, CSV, SQL, SDF и многие другие.

Используя DBF Converter, вы сможете обрабатывать все файлы и данные DBF с минимальными усилиями всего за несколько щелчков мыши.

Название DBF конвертер
Версия 5,79
Разработчик HiBase Group
Домашняя страница продукта DBF конвертер
Лицензия Бесплатно попробовать (Shareware)
Загрузки прошлой недели 12
Все время загрузки 3272
Имя файла dbfcnv.exe
Размер файла 6.1MB
Контрольная сумма MD5 DCDB3099E1FA6AC3807A32BC847AFDC4
Поддержка ОС Windows All
Категория Бизнес

Похожие программы

DBF Viewer 2000 7.17

Мощная и быстрая программа для редактирования и просмотра файлов DBF.

DataNumen Oracle Recovery 1.0

Легко исправлять поврежденные базы данных DBF с помощью этого инструмента.

Icons from File 5.09

Небольшой инструмент, который позволяет извлекать значки из файлов и приложений.

dbForge Studio для MySQL 8.0.40

Инструмент, который поможет администраторам и разработчикам MySQL в их работе.

XLS (Excel) to DBF Converter 2.10

Позволяет вам кодировать ваши документы XLS в DBF.

DBForms from MS Access to PHP + MySQL 3.3.3

Мощное и всеобъемлющее приложение, которое позволяет конвертировать файлы Access в MySQL и PHP.

Database Tour 9.2.5.79

Надежное и многофункциональное приложение, которое позволяет вам лучше управлять вашими базами данных.

Прошу прощения, не было опыта работы с XML

делаю 2 таблицы, савязываю их и выгоняю в XNL с помощью XMLAdaptera. Получаю:

<?xml version = "1.0" encoding="Windows-1251" standalone="yes"?>
<VFPDataSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="C:\test_xml1.xsd">
<TTT_msg_work>
<ttt_id>1</ttt_id>
<msg_1>msg_11</msg_1>
<msg_2>msg_22</msg_2>
<msg_3>msg_33</msg_3>
<GND>
<ttt_id>1</ttt_id>
<nomid1>1</nomid1>
<dttm1>2009-01-27</dttm1>
<dttm2>2009-01-27</dttm2>
<gdn>N</gdn>
</GND>
</TTT_msg_work>
</VFPDataSet>

1) как можно убрать тег <ttt_id>, поле связывающее таблицы

2) где-то в документации по XML было написанно, что XML чувствителен к регистру. В примере указан тег, например <NomId1>, через XMLAdapter получился тег <nomid1>

3) в примере есть блок:
<Adr>
<AdrLine>Region/Адрес1</AdrLine>
<AdrLine>District/Адрес2</AdrLine>
<CityNm />
<AdrLine>Territory/Адрес3</AdrLine>
</Adr>
повторяющийся тег <AdrLine> и между ним <CityNm>. Как это можно реализовать через XMLAdapter?

4) можно ли задать XMLAdapter указать внешнюю схему, по которой бы он создал XML. У меня почему-то получается, что он создает свой файл схемы с указаным мной именем

Но при этом надо учитывать, что схема буде пересоздана. Иначе схема можетне совпасть с данными. Это как с DBF - данные взять из одного файла, а заголовок из другого.

Спасибо за ответ.
Попробовала - работает.

Теперь пробую операцию XML в DBF, используя XMLAdapter

Файл XML - SCAN_3.XML:

Сделала схему - SCAN_3.xsd:

получаю пустой курсор без данных.
XMLAdapter загружает данные только по схеме созданной XMLAdapter?
или что-то неверно мной написанно в схеме или процедуре загрузки через XMLAdapter

Вот уже в первых двух строках наступил на грабли. Русские буквы ААА в теге и utf-8 несовместимы.
Или убирай русские буквы, или вместо utf-8 пиши Windows-1251.
Остальное пока не смотрел.

DBF-файл – это файл, в котором данные хранятся в виде таблицы (Database format). Работа с этими файлами происходит по принципу курсора, т.е. по одной строке. Для работы с DBF-файлами существует тип данных XBase. Несмотря на то, что формат DBF считается уже устаревшим, может возникнуть необходимость работы с файлами данного формата, особенно, если вы перегружаете данные из какой-нибудь старой программы!
Код 1C v 8.х
Код 1C v 8.х
Код 1C v 7.x

Разместил: E_Migachev  Версии: | 7.x | 8.x |  Дата: 30.12.2009   Прочитано: 79357

Распечатать

Похожие FAQ

База 1С вылетает, виснет, не грузится, падает с ошибкой?  0
Есть ряд методов, которыми можно попытаться " поднять" упавшую базу 1С 8.х Но сперва нужно сделать резервную копию! Сделайте резервную копию простым копированием папки базы, выгрузка не всегда может быть корректна. Удалить все файлы в папке базы, Внутренняя ошибка компоненты DBENG8  0
Ошибка СУБД: Внутренняя ошибка компоненты dbeng8 по причине: Внутренняя ошибка компоненты dbeng8 Решение: 1: Тестирование исправление базы 2: Проверка базы используя chdbfl.exe 3: Обновить версию Платформы 4: Обновить dbeng8.dll в bin Выборка данных из DBF файлов запросом  0
RS= Новый COMОбъект(" ADODB.Recordset" ); SSource = " S_elect * FROM nomen.dbf WHERE cost 100" ; SConnect = " Provider=MSDASQL.1;Persist Security Info=False;Data Source=nomen.dbf;Initial Catalog=D:" ; RS.Open(SSource,SConnect); Пока RS.EOF() = Выгрузка / Загрузка данных посредством XML файлов?  1
В основе работы с XML-файлами лежит технология доступа SAX, которая осуществляет считывание по одному тегу. Для этого существует два типа данных – ЗаписьXML и ЧтениеXML . Запись данных справочника в XML-файл: Запись = Новый ЗаписьXML; Запись.О Выгрузка / Загрузка данных посредством текстовых (TXT) файлов  5
Для работы с текстовыми документами существуют три типа данных – ТекстовыйДокумент, ЗаписьТекста и ЧтениеТекста . Разница двух подходов состоит в способе загрузки документа: ТекстовыйДокумент загружает файл целиком и далее построчно обрабатывает е Посмотреть все результаты поиска похожих

Еще в этой же категории

Читайте также: