BEST logo логотип компании БЭСТ - программы для бизнеса ПРОДАЖИ
+7 (991) 312-04-37
trade@bestnet.ru
ПОДДЕРЖКА
+7 (495) 775-66-76
consult@bestnet.ru
СКАЧАТЬ
Обновления
Дистрибутивы
Авторизация

Логин:
Пароль:
Забыли свой пароль?
Регистрация
ВАШ ВОПРОС

Доступ к Личному кабинету закрыт!
Как получить доступ?


Главная  / Поддержка  / Форум  / Публичные форумы  / Программирование приложений  / Экспорт-импорт в XML в спецфункциях

Форум

Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Экспорт-импорт в XML в спецфункциях
 
Как можно реализовать обмен данными через XML в спец функциях?
Понимаю что XML просто текстовый файл, но как-то очень муторно отслеживать все открытия закрытия тегов и т.п.
Может кто пробовал это сделать через парсер Майкрософта или как-то аналогично?
 
На старом форуме я выкладывал бесплатно решение для стыковки в формате EANCOM2002.
Это как раз международный формат обмена документами в XML.
Общий принцип как это делается можно посмотреть там.
Скажу только одно:
В узле может лежать как требуемое значение, так и массив значений и от этого зависит принцип работы с узлом. Я это регулирую в программе, когда прохожу ее с отладчиком (если формат хранения в узле не описан).
В остальном общий подход я думаю Вы увидите.
 
Посмотрите еще в Справочник пользователя БЭСТ-4+ v 1.2.0. Там в частности есть "Урок 7. Создание импорта из XML".
 
Спасибо.
В этих примерах рассматривает в основном вариант импорта :( Прийдётся про экспорт думать самому.
 
Цитата
Александр К пишет:
Спасибо.
В этих примерах рассматривает в основном вариант импорта :( Прийдётся про экспорт думать самому.

В БЭСТе есть специальные функции для этого: класс XMLDOC(), и вспомогательные функции (для удобства):
xAdd - долбавить узел,
xFix - зафиксироваься
xRight - сдвинуться вправо на один уровень
xLeft - сдвинуться влево на один уровень

Примеры можно посмотреть ы алгоритмах выгрузки налоговых форм (expprg.dbf), также ниже приведен пример формирования XML-файла для OO CALC:

Код
   oDoc := HXMLDoc():New()
   oDoc:Add( HXMLNode():New( "manifest:manifest",,;
   { {"xmlns:manifest","urn:oasis:names:tc:opendocument:xmlns:manifest:1.0"} } ) )

   oDoc:aItems[1]:Add( HXMLNode():New( "manifest:file-entry", HBXML_TYPE_SINGLE, ;
         { {"manifest:media-type","application/vnd.oasis.opendocument.spreadsheet"},;
           {"manifest:full-path","/"} } ) )
   oDoc:aItems[1]:Add( HXMLNode():New( "manifest:file-entry", HBXML_TYPE_SINGLE, ;
         { {"manifest:media-type",""},;
           {"manifest:full-path","Configurations2/statusbar/"} } ) )
   oDoc:aItems[1]:Add( HXMLNode():New( "manifest:file-entry", HBXML_TYPE_SINGLE, ;
         { {"manifest:media-type",""},;
           {"manifest:full-path","Configurations2/accelerator/current.xml"} } ) )
   oDoc:aItems[1]:Add( HXMLNode():New( "manifest:file-entry", HBXML_TYPE_SINGLE, ;
         { {"manifest:media-type",""},;
           {"manifest:full-path","Configurations2/accelerator/"} } ) )
   oDoc:aItems[1]:Add( HXMLNode():New( "manifest:file-entry", HBXML_TYPE_SINGLE, ;
         { {"manifest:media-type",""},;
           {"manifest:full-path","Configurations2/floater/"} } ) )
   oDoc:aItems[1]:Add( HXMLNode():New( "manifest:file-entry", HBXML_TYPE_SINGLE, ;
         { {"manifest:media-type",""},;
           {"manifest:full-path","Configurations2/popupmenu/"} } ) )
   oDoc:aItems[1]:Add( HXMLNode():New( "manifest:file-entry", HBXML_TYPE_SINGLE, ;
         { {"manifest:media-type",""},;
           {"manifest:full-path","Configurations2/progressbar/"} } ) )
   oDoc:aItems[1]:Add( HXMLNode():New( "manifest:file-entry", HBXML_TYPE_SINGLE, ;
         { {"manifest:media-type",""},;
           {"manifest:full-path","Configurations2/menubar/"} } ) )
   oDoc:aItems[1]:Add( HXMLNode():New( "manifest:file-entry", HBXML_TYPE_SINGLE, ;
         { {"manifest:media-type",""},;
           {"manifest:full-path","Configurations2/toolbar/"} } ) )
   oDoc:aItems[1]:Add( HXMLNode():New( "manifest:file-entry", HBXML_TYPE_SINGLE, ;
         { {"manifest:media-type",""},;
           {"manifest:full-path","Configurations2/images/Bitmaps/"} } ) )
   oDoc:aItems[1]:Add( HXMLNode():New( "manifest:file-entry", HBXML_TYPE_SINGLE, ;
         { {"manifest:media-type",""},;
           {"manifest:full-path","Configurations2/images/"} } ) )
   oDoc:aItems[1]:Add( HXMLNode():New( "manifest:file-entry", HBXML_TYPE_SINGLE, ;
         { {"manifest:media-type","application/vnd.sun.xml.ui.configuration"},;
           {"manifest:full-path","Configurations2/"} } ) )
   oDoc:aItems[1]:Add( HXMLNode():New( "manifest:file-entry", HBXML_TYPE_SINGLE, ;
         { {"manifest:media-type","text/xml"},;
           {"manifest:full-path","content.xml"} } ) )
   oDoc:aItems[1]:Add( HXMLNode():New( "manifest:file-entry", HBXML_TYPE_SINGLE, ;
         { {"manifest:media-type","text/xml"},;
           {"manifest:full-path","styles.xml"} } ) )
   oDoc:aItems[1]:Add( HXMLNode():New( "manifest:file-entry", HBXML_TYPE_SINGLE, ;
         { {"manifest:media-type","text/xml"},;
           {"manifest:full-path","meta.xml"} } ) )
   oDoc:aItems[1]:Add( HXMLNode():New( "manifest:file-entry", HBXML_TYPE_SINGLE, ;
         { {"manifest:media-type",""},;
           {"manifest:full-path","Thumbnails/thumbnail.png"} } ) )
   oDoc:aItems[1]:Add( HXMLNode():New( "manifest:file-entry", HBXML_TYPE_SINGLE, ;
         { {"manifest:media-type",""},;
           {"manifest:full-path","Thumbnails/"} } ) )
   oDoc:aItems[1]:Add( HXMLNode():New( "manifest:file-entry", HBXML_TYPE_SINGLE, ;
         { {"manifest:media-type","text/xml"},;
           {"manifest:full-path","settings.xml"} } ) )
   FErase(cDir+cSep+"META-INF\manifest.xml")
   oDoc:Save(cDir+cSep+"META-INF\manifest.xml" )

 
Цитата
Александр Титов пишет:



Цитата

Александр К пишет:
Спасибо.
В этих примерах рассматривает в основном вариант импорта :( Прийдётся про экспорт думать самому.
В БЭСТе есть специальные функции для этого: класс XMLDOC(), и вспомогательные функции (для удобства):
xAdd - долбавить узел,
xFix - зафиксироваься
xRight - сдвинуться вправо на один уровень
xLeft - сдвинуться влево на один уровень

Примеры можно посмотреть ы алгоритмах выгрузки налоговых форм (expprg.dbf), также ниже приведен пример формирования XML-файла для OO CALC:


О, это очень здорово! :)
А как через XMLDOC() решается Вопрос чтения узлов?
 
Цитата
Александр К пишет:
О, это очень здорово! :)
А как через XMLDOC() решается Вопрос чтения узлов?


CLASS HXMLNode

DATA title
DATA type
DATA aItems INIT {}
DATA aAttr INIT {}

METHOD New( cTitle, type, aAttr )
METHOD Add( xItem )
METHOD GetAttribute( cName )
METHOD SetAttribute( cName,cValue )
METHOD Save( handle,level)
METHOD Find( cTitle,nStart )
ENDCLASS


/*
* CLASS DEFINITION
* HXMLDoc
*/

CLASS HXMLDoc INHERIT HXMLNode

METHOD New( encoding )
METHOD Read( fname )
METHOD ReadString( buffer ) INLINE ::Read( ,buffer )
METHOD Save( fname,lNoHeader )
METHOD Save2String() INLINE ::Save()
ENDCLASS
Страницы: 1
Читают тему (гостей: 1)