xml

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
evchic
Местный житель
Сообщения: 216
Зарегистрирован: 25 апр 2006, 12:05
Откуда: г.Ростов-на-Дону
Контактная информация:

xml

Сообщение evchic »

У кого-нибудь есть пример VIP как получить данные из файла xml...
Max_Fin
На пенсии
Сообщения: 797
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г. Тюмень
Контактная информация:

Сообщение Max_Fin »

Все достаточно просто
см. G_EI_EF.inc

Код: Выделить всё

/*
 ╔═══════════════════════════════════════════════════════════════════════════╗
 ║                     (c) 1994,2002 корпорация ГАЛАКТИКА                    ║
 ║ Система       : ГАЛАКТИКА                                                 ║
 ║ Проект        : Бухгалтерский контур                                      ║
 ║ Версия        : 5.84                                                      ║
 ║ Назначение    : Внешние процедуры и функции из G_ExpImp.dll               ║
 ║ Ответственный : Ярошук Дмитрий Леонидович (Smile)                         ║
 ╚═══════════════════════════════════════════════════════════════════════════╝
*/

//------------------------------------------------------------------------------
// TableInfo.pas
function  GetRecordsInTable (Word)           : longint; external 'G_ExpImp.dll';
function  GetRecordSize     (Word)           : longint; external 'G_ExpImp.dll';
Function  ScanTable         (word)           : longInt; external 'G_ExpImp.dll';

//------------------------------------------------------------------------------
// ieLib.pas
function  TemporaryDirectory                             : string;  external 'G_ExpImp.dll';
procedure GetFileInfo          ( string, var date, var time, var longint ); external 'G_ExpImp.dll';
function  SaveTuneToFile       ( comp, string )          : boolean; external 'G_ExpImp.dll';
function  RestoreTuneFromFile  ( string, word, word )    : comp;    external 'G_ExpImp.dll';
function  IsEmptyMemo          ( var anytype )           : boolean; external 'G_ExpImp.dll';
function  ExtractFormName      ( string )                : string;  external 'G_ExpImp.dll';
function  LoadResource         ( string )                : boolean; external 'G_ExpImp.dll';
function  ieTextFormInit       ( comp, string )          : integer; external 'G_ExpImp.dll';
procedure ieTextFormDone;                                           external 'G_ExpImp.dll';
function  ieTextFormFindFirstRecord ( boolean )          : boolean; external 'G_ExpImp.dll';
function  ieTextFormFindNextRecord  ( boolean )          : boolean; external 'G_ExpImp.dll';
function  ieTextFormImportField     ( boolean, word, var anytype ) : boolean; external 'G_ExpImp.dll';
function  ieTextFormSetFileName     ( string )           : boolean; external 'G_ExpImp.dll';
function  ieTextFormValidTopology   ( comp )             : boolean; external 'G_ExpImp.dll';
function  ieTextFormNumberOfRecords                      : longint; external 'G_ExpImp.dll';
function  GroupOfWords         ( string, string )        : string;  external 'G_ExpImp.dll';
function  GroupOfWordsFrom     ( string, string, string, string, string, string ) : string;  external 'G_ExpImp.dll';
function  GroupOfWordsRem      ( string, string )        : string;  external 'G_ExpImp.dll';
function  GroupOfWordsFromRem  ( string, string, string, string, string, string ) : string;  external 'G_ExpImp.dll';
function  GetBoundedSubString  ( string, char, char, byte ) : string;  external 'G_ExpImp.dll';
function  UndoFileName         ( string )                : string;  external 'G_ExpImp.dll';
function  CurrencyName         ( comp )                  : string;  external 'G_ExpImp.dll';
function  DelClassVal          ( boolean )               : integer; external 'G_ExpImp.dll';
function  DelAttrVal           ( boolean )               : integer; external 'G_ExpImp.dll';
function  FileExist            ( string )                : boolean; external 'G_ExpImp.dll';
function  IsDirectory          ( string )                : boolean; external 'G_ExpImp.dll';
function  CreateUniqueFileName ( string )                : string;  external 'G_ExpImp.dll';
function  AddSlashToPath       ( string )                : string;  external 'G_ExpImp.dll';
function  VerifyPathName       ( string , boolean)       : boolean; external 'G_ExpImp.dll';
function  StartPathName                                  : string;  external 'G_ExpImp.dll';
function  ExtractDelimitedWord ( string, byte, string )  : string;  external 'G_ExpImp.dll';
//------------------------------------------------------------------------------
// Xml_Func.pas
function XML_New                                                       : longint; external 'G_ExpImp.dll';
function XML_LoadDoc      (longint, string)                            : boolean; external 'G_ExpImp.dll';
function XML_FindFirstDoc (longint, longint, comp, comp)               : longint; external 'G_ExpImp.dll';
function XML_FindNextDoc  (longint, longint, comp, comp)               : longint; external 'G_ExpImp.dll';
function ImportXMLField   (longint, comp, longint, comp)               : string;  external 'G_ExpImp.dll';
function XML_Done         (longint)                                    : boolean; external 'G_ExpImp.dll';
function InitXML_Doc      (longint, comp)                              : longint; external 'G_ExpImp.dll';
function XML_NewNode      (longint, longint, longint ,string)          : longint; external 'G_ExpImp.dll';
function ExportXMLField   (longint, longint, comp ,string)             : boolean; external 'G_ExpImp.dll';
function XML_SaveAs       (longint, longint, longint ,longint, string) : boolean; external 'G_ExpImp.dll';
function XML_FillMeta     (longint, comp)                              : boolean; external 'G_ExpImp.dll';
function XML_GetRoot      (longint)                                    : longint; external 'G_ExpImp.dll';
function XML_Release      (longint)                                    : boolean; external 'G_ExpImp.dll';
//------------------------------------------------------------------------------
// XMLDOMFunc.pas
function XMLDOMDoc_New                                                     : longint; external 'G_ExpImp.dll';
function XMLDOMDoc_Load                        (longint, string)           : boolean; external 'G_ExpImp.dll';
function XMLDOMDoc_Save                        (longint, string)           : boolean; external 'G_ExpImp.dll';
function XMLDOMDoc_DocumentElement             (longint)                   : longint; external 'G_ExpImp.dll';
function XMLDOMDoc_CreateNode                  (longint, integer, string)  : longint; external 'G_ExpImp.dll';
function XMLDOMDoc_CreateAttribute             (longint, string)           : longint; external 'G_ExpImp.dll';
function XMLDOMDoc_CreateCDataSection          (longint, string)           : longint; external 'G_ExpImp.dll';
function XMLDOMDoc_CreateComment               (longint, string)           : longint; external 'G_ExpImp.dll';
function XMLDOMDoc_CreateDocumentFragment      (longint)                   : longint; external 'G_ExpImp.dll';
function XMLDOMDoc_CreateElement               (longint, string)           : longint; external 'G_ExpImp.dll';
function XMLDOMDoc_CreateEntityReference       (longint, string)           : longint; external 'G_ExpImp.dll';
function XMLDOMDoc_CreateProcessingInstruction (longint, string, string)   : longint; external 'G_ExpImp.dll';
function XMLDOMDoc_CreateTextNode              (longint, string)           : longint; external 'G_ExpImp.dll';
function XMLDOMAttribute_get_NodeValue         (longint)                   : string;  external 'G_ExpImp.dll';
function XMLDOMAttribute_set_NodeValue         (longint, string)           : boolean; external 'G_ExpImp.dll';
function XMLDOMCDataSection_AppendData         (longint, string)           : boolean; external 'G_ExpImp.dll';
function XMLDOMCDataSection_get_Length         (longint)                   : longint; external 'G_ExpImp.dll';
function XMLDOMCDataSection_get_NodeValue      (longint)                   : string;  external 'G_ExpImp.dll';
function XMLDOMCDataSection_set_NodeValue      (longint, string)           : boolean; external 'G_ExpImp.dll';
function XMLDOMCDataSection_SubstringData      (longint, longint, longint) : string;  external 'G_ExpImp.dll';
function XMLDOMElement_SetAttribute            (longint, string, string)   : boolean; external 'G_ExpImp.dll';
function XMLDOMNode_AppendChild                (longint, longint)          : longint; external 'G_ExpImp.dll';
function XMLDOMNode_get_Attributes             (longint)                   : longint; external 'G_ExpImp.dll';
function XMLDOMNode_get_ChildNodes             (longint)                   : longint; external 'G_ExpImp.dll';
function XMLDOMNode_get_NodeType               (longint)                   : integer; external 'G_ExpImp.dll';
function XMLDOMNode_get_NodeName               (longint)                   : string;  external 'G_ExpImp.dll';
function XMLDOMNode_Release                    (longint)                   : boolean; external 'G_ExpImp.dll';
function XMLDOMNamedNodeMap_get_Length         (longint)                   : longint; external 'G_ExpImp.dll';
function XMLDOMNamedNodeMap_get_Item           (longint, longint)          : longint; external 'G_ExpImp.dll';
function XMLDOMNodeList_get_Length             (longint)                   : longint; external 'G_ExpImp.dll';
function XMLDOMNodeList_get_Item               (longint, longint)          : longint; external 'G_ExpImp.dll';
function XMLDOMDoc_GetElementsByTagName        (longint, string)           : longint; external 'G_ExpImp.dll';
function XMLDOMDoc_Done                        (longint)                   : boolean; external 'G_ExpImp.dll';
//------------------------------------------------------------------------------
function InitMAPIMessage : longint; external 'G_ExpImp.dll';
function DoneMAPIMessage(longint) : boolean; external 'G_ExpImp.dll';
function SetMAPIMessageSubject(string, longint) : boolean; external 'G_ExpImp.dll';
function SetMAPIMessageType(string, longint) : boolean; external 'G_ExpImp.dll';
function AddStringToMailBody(string, longint) : boolean; external 'G_ExpImp.dll';
function AddRecipientToMail(string, string, longint) : boolean; external 'G_ExpImp.dll';
function AddAttachedFileToMail(string, string, longint) : boolean; external 'G_ExpImp.dll';
function SendGalMail(longint) : longint; external 'G_ExpImp.dll';
function GetOsVersion : string; external 'G_ExpImp.dll';

function _sGetPrivProf(string, string, string): string; external 'G_ExpImp.dll';
function _lGetPrivProf(string, string, string): Longint; external 'G_ExpImp.dll';
procedure _WritePrivateProfileString(string, string, string, string); external 'G_ExpImp.dll';

#ifdef GAL8_1
function Init_TableBufferService(var AnyType) : longint; external 'G_ExpImp.dll';
procedure Done_TableBufferService(longint); external 'G_ExpImp.dll';
function Get_TableBuffer(longint, var AnyType) : boolean; external 'G_ExpImp.dll';
function Set_TableField(longint, var AnyType, word, word) : boolean; external 'G_ExpImp.dll';
#endif

//------------------------------------------------------------------------------
// ieFileFinder.pas
function  FindFirstFile        ( string , var anytype )  : boolean; external 'G_ExpImp.dll';
function  FindNextFile         ( var anytype )           : boolean; external 'G_ExpImp.dll';
function  FindFirstFileCli     ( string , var anytype )  : boolean; external 'G_ExpImp.dll';
function  FindNextFileCli      ( var anytype )           : boolean; external 'G_ExpImp.dll';
procedure DoneFileFinderCli;                                        external 'G_ExpImp.dll';

//------------------------------------------------------------------------------
// FastExpImp.pas
procedure FastExp(string); external 'G_ExpImp.dll';
procedure FastImp(string); external 'G_ExpImp.dll';
Жду выхода Вселенная 2.12!
Max_Fin
На пенсии
Сообщения: 797
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г. Тюмень
Контактная информация:

Сообщение Max_Fin »

Поможет ли пример не знаю, вот кусок из одной разработки

Код: Выделить всё

function ImpXML(sFileXML: String): Boolean;
{
var C_F, C_P: Comp;

var xmlDocID: LongInt; //<Документ>

//<ALGDATASET>
var xmlTblID_Alg: LongInt;
var xmlTblID_Alg_Nodes, xmlTblID_Alg_NodesCount, xmlTblID_Alg_NodesI: LongInt;

//<ALGROW>
var xmlRowID_Alg: LongInt;
var xmlRowID_Alg_Nodes, xmlRowID_Alg_NodesCount, xmlRowID_Alg_NodesI: LongInt;

//<ALGID><ALGDESCR><ALGDATE><ALGCODE><ALGNAME><WORKERSDATASET>
var xmlRowID_Alg_SubNodes: LongInt;
var SetAlgBuf: TSetAlgBuf;
var cAlgNastr: Comp;

//<WORKERSDATASET>
var xmlTblID_Workers_Nodes, xmlTblID_Workers_NodesCount, xmlTblID_Workers_NodesI: LongInt;

//<WORKERSROW>
var xmlRowID_Wr: LongInt;
var xmlRowID_Wr_Nodes, xmlRowID_Wr_NodesCount, xmlRowID_Wr_NodesI: LongInt

////<WORKERSALGID><WORKERSTREJIM><WORKERSTWORKER><NORMFUNCDATASET><NORMPROCDATASET><ADMFUNCDATASET><ADMPROCDATASET>
var xmlRowID_Wr_SubNodes: LongInt;
var SetWorkersBuf: TSetWorkersBuf;
var cAlgWorkers: Comp;

//<NORMFUNCDATASET>
var xmlTblID_NF_Nodes, xmlTblID_NF_NodesCount, xmlTblID_NF_NodesI: LongInt;

//<NORMFUNCROW>
var xmlRowID_NF: LongInt;
var xmlRowID_NF_Nodes, xmlRowID_NF_NodesCount, xmlRowID_NF_NodesI: LongInt;

//<NORMFUNCID><NORMFUNCDESCR><NORMFUNCDATE><NORMFUNCNO><NORMFUNCFUNC><NORMFUNCNOTE>
var xmlRowID_NF_SubNodes: LongInt;

//<NORMPROCROW>
var xmlRowID_NP: LongInt;
var xmlRowID_NP_Nodes, xmlRowID_NP_NodesCount, xmlRowID_NP_NodesI: LongInt;

//<NORMPROCID><NORMPROCDESCR><NORMPROCDATE><NORMPROCNO><NORMPROCIF><NORMPROCT><NORMPROCF>
var xmlRowID_NP_SubNodes: LongInt;
var SetNFBuf: TSetFBuf;
var SetNPBuf: TSetPBuf;
var cRecNF: Comp;

#declare dclFunc(c_F, c_P, RowName, FuncNo, FuncFunc, FuncNote)
  if SetWorkersBuf.bIns
  {
    cAlgWorkers := InsertWorkersBuf(SetWorkersBuf);
    if cAlgWorkers = Comp(0) continue;
    SetWorkersBuf.bIns := false;
  }

  xmlTblID_NF_Nodes := XMLDOMNode_Get_ChildNodes(xmlRowID_Wr_SubNodes);
  if xmlTblID_NF_Nodes <> 0
  {
    CurrentF := #c_F;
    CurrentP := #c_P;
    AlgNastrChange;

    xmlTblID_NF_NodesCount := XMLDOMNodeList_Get_Length(xmlTblID_NF_Nodes);
    for (xmlTblID_NF_NodesI := 0;
         xmlTblID_NF_NodesI < xmlTblID_NF_NodesCount;
         xmlTblID_NF_NodesI++)
    {
      xmlRowID_NF := XMLDOMNodeList_Get_Item(xmlTblID_NF_Nodes, xmlTblID_NF_NodesI);
      if xmlRowID_NF <> 0
      {
        if #RowName = XMLDOMNode_Get_NodeName(xmlRowID_NF)
        {
          xmlRowID_NF_Nodes := XMLDOMNode_Get_ChildNodes(xmlRowID_NF);
          if xmlRowID_NF_Nodes <> 0
          {
            xmlRowID_NF_NodesCount := XMLDOMNodeList_Get_Length(xmlRowID_NF_Nodes);
            //<NORMFUNCID><NORMFUNCDESCR><NORMFUNCDATE><NORMFUNCNO><NORMFUNCFUNC><NORMFUNCNOTE>
            ClearAdvRecord(SetNFBuf);
            for (xmlRowID_NF_NodesI := 0;
                 xmlRowID_NF_NodesI < xmlRowID_NF_NodesCount;
                 xmlRowID_NF_NodesI++)
            {
              xmlRowID_NF_SubNodes := XMLDOMNodeList_Get_Item(xmlRowID_NF_Nodes, xmlRowID_NF_NodesI);
              if xmlRowID_NF_SubNodes <> 0
              {
                case XMLDOMNode_Get_NodeName(xmlRowID_NF_SubNodes) of
//                  'NORMFUNCID':
//                  'NORMFUNCDESCR':
//                  'NORMFUNCDATE':
                  #FuncNo: 
                  {
                    SetNFBuf.bIns := true;
                    SetNFBuf.No := Word(GetValueFld(xmlRowID_NF_SubNodes));
                  }
                  #FuncFunc: 
                  {
                    SetNFBuf.bIns := true;
                    SetNFBuf.AlgFunc := GetValueFld(xmlRowID_NF_SubNodes);
                  }
                  #FuncNote: 
                  {
                    SetNFBuf.bIns := true;
                    SetNFBuf.AlgNote := GetValueFld(xmlRowID_NF_SubNodes);
                  }
                end;
                XMLDOMNode_Release(xmlRowID_NF_SubNodes);
              }
            }
            if SetNFBuf.bIns
            {
              cRecNF := InsertFBuf(SetNFBuf);
            }
            XMLDOMNode_Release(xmlRowID_NF_Nodes);
          }
        }
        XMLDOMNode_Release(xmlRowID_NF);
      }
    }
    XMLDOMNode_Release(xmlTblID_NF_Nodes);
  }
#end

#declare dclProc(c_F, c_P, RowName, FuncNo, FuncIf, FuncT, FuncF, FuncNote)
  if SetWorkersBuf.bIns
  {
    cAlgWorkers := InsertWorkersBuf(SetWorkersBuf);
    if cAlgWorkers = Comp(0) continue;
    SetWorkersBuf.bIns := false;
  }

  xmlTblID_NF_Nodes := XMLDOMNode_Get_ChildNodes(xmlRowID_Wr_SubNodes);
  if xmlTblID_NF_Nodes <> 0
  {
    CurrentF := #c_F;
    CurrentP := #c_P;
    AlgNastrChange;

    xmlTblID_NF_NodesCount := XMLDOMNodeList_Get_Length(xmlTblID_NF_Nodes);
    for (xmlTblID_NF_NodesI := 0;
         xmlTblID_NF_NodesI < xmlTblID_NF_NodesCount;
         xmlTblID_NF_NodesI++)
    {
      xmlRowID_NF := XMLDOMNodeList_Get_Item(xmlTblID_NF_Nodes, xmlTblID_NF_NodesI);
      if xmlRowID_NF <> 0
      {
        if #RowName = XMLDOMNode_Get_NodeName(xmlRowID_NF)
        {
          xmlRowID_NF_Nodes := XMLDOMNode_Get_ChildNodes(xmlRowID_NF);
          if xmlRowID_NF_Nodes <> 0
          {
            xmlRowID_NF_NodesCount := XMLDOMNodeList_Get_Length(xmlRowID_NF_Nodes);
            //<NORMFUNCID><NORMFUNCDESCR><NORMFUNCDATE><NORMFUNCNO><NORMFUNCFUNC><NORMFUNCNOTE>
            ClearAdvRecord(SetNPBuf);
            for (xmlRowID_NF_NodesI := 0;
                 xmlRowID_NF_NodesI < xmlRowID_NF_NodesCount;
                 xmlRowID_NF_NodesI++)
            {
              xmlRowID_NF_SubNodes := XMLDOMNodeList_Get_Item(xmlRowID_NF_Nodes, xmlRowID_NF_NodesI);
              if xmlRowID_NF_SubNodes <> 0
              {
                case XMLDOMNode_Get_NodeName(xmlRowID_NF_SubNodes) of
//                  'NORMFUNCID':
//                  'NORMFUNCDESCR':
//                  'NORMFUNCDATE':
                  #FuncNo: 
                  {
                    SetNPBuf.bIns := true;
                    SetNPBuf.No := Word(GetValueFld(xmlRowID_NF_SubNodes));
                  }
                  #FuncIf: 
                  {
                    SetNPBuf.bIns := true;
                    SetNPBuf.AlgIf := GetValueFld(xmlRowID_NF_SubNodes);
                  }
                  #FuncT: 
                  {
                    SetNPBuf.bIns := true;
                    SetNPBuf.AlgT := GetValueFld(xmlRowID_NF_SubNodes);
                  }
                  #FuncF: 
                  {
                    SetNPBuf.bIns := true;
                    SetNPBuf.AlgF := GetValueFld(xmlRowID_NF_SubNodes);
                  }
                  #FuncNote: 
                  {
                    SetNPBuf.bIns := true;
                    SetNPBuf.AlgNote := GetValueFld(xmlRowID_NF_SubNodes);
                  }
                end;
                XMLDOMNode_Release(xmlRowID_NF_SubNodes);
              }
            }
            if SetNPBuf.bIns
            {
              cRecNF := InsertPBuf(SetNPBuf);
            }
            XMLDOMNode_Release(xmlRowID_NF_Nodes);
          }
        }
        XMLDOMNode_Release(xmlRowID_NF);
      }
    }
    XMLDOMNode_Release(xmlTblID_NF_Nodes);
  }
#end

  _try
  {
    StartNewVisual(vtRotateVisual, vfTimer, 'Импорт...', 10);

    C_F := CurrentF;
    C_P := CurrentP;

    xmlDocID := XMLOpenDoc(sFileXML);
    if xmlDocID = 0
    {
      Message('Ошибка открытия XML:"' + sFileXML + '"', Error);
      _raise excXML_IE;
    }

    xmlTblID_Alg := myxml_GetNode(xmlDocID, 'ALGDATASET');
    if xmlTblID_Alg = 0 // нет корневого элемента
    {
      Message('Ошибка чтения таблицы ALGDATASET', Error);
      XMLDOMDoc_Done(xmlDocID);
      _raise excXML_IE;
    }

    xmlTblID_Alg_Nodes := XMLDOMNode_Get_ChildNodes(xmlTblID_Alg);
    if xmlTblID_Alg_Nodes <> 0
    {
      xmlTblID_Alg_NodesCount := XMLDOMNodeList_Get_Length(xmlTblID_Alg_Nodes);
      for (xmlTblID_Alg_NodesI := 0; 
           xmlTblID_Alg_NodesI < xmlTblID_Alg_NodesCount; 
           xmlTblID_Alg_NodesI++) //<ALGROW>
      {
        xmlRowID_Alg := XMLDOMNodeList_Get_Item(xmlTblID_Alg_Nodes, xmlTblID_Alg_NodesI);
        if xmlRowID_Alg <> 0
        {
          if 'ALGROW' = XMLDOMNode_Get_NodeName(xmlRowID_Alg)
          {
            xmlRowID_Alg_Nodes := XMLDOMNode_Get_ChildNodes(xmlRowID_Alg);

            if xmlRowID_Alg_Nodes <> 0
            {
              xmlRowID_Alg_NodesCount := XMLDOMNodeList_Get_Length(xmlRowID_Alg_Nodes);
              //<ALGID><ALGDESCR><ALGDATE><ALGCODE><ALGNAME><WORKERSDATASET>
              ClearAdvRecord(SetAlgBuf);
              for (xmlRowID_Alg_NodesI := 0;
                   xmlRowID_Alg_NodesI < xmlRowID_Alg_NodesCount;
                   xmlRowID_Alg_NodesI++)
              {
                xmlRowID_Alg_SubNodes := XMLDOMNodeList_Get_Item(xmlRowID_Alg_Nodes, xmlRowID_Alg_NodesI);
                if xmlRowID_Alg_SubNodes <> 0
                {
                  case XMLDOMNode_Get_NodeName(xmlRowID_Alg_SubNodes) of
//                   'ALGID':
//                    'ALGDESCR':
//                    'ALGDATE':
                    'ALGCODE': 
                    {
                       SetAlgBuf.bIns := true;
                       SetAlgBuf.Code := Word(GetValueFld(xmlRowID_Alg_SubNodes));
#ifdef __MF_DEBUG__
                       #LogS('ALGCODE ' + GetValueFld(xmlRowID_Alg_SubNodes));
#end
                    }
                    'ALGNAME': 
                    {
                       SetAlgBuf.bIns := true;
                       SetAlgBuf.Name := GetValueFld(xmlRowID_Alg_SubNodes);
#ifdef __MF_DEBUG__
                       #LogS('ALGNAME ' + GetValueFld(xmlRowID_Alg_SubNodes));
#end
                    }
                    'WORKERSDATASET':
                    {
                      if not SetAlgBuf.bIns continue;
                      cAlgNastr := InsertAlgBuf(SetAlgBuf);
                      if cAlgNastr = Comp(0) continue;

                      xmlTblID_Workers_Nodes := XMLDOMNode_Get_ChildNodes(xmlRowID_Alg_SubNodes);
                      if xmlTblID_Workers_Nodes <> 0
                      {
                        xmlTblID_Workers_NodesCount := XMLDOMNodeList_Get_Length(xmlTblID_Workers_Nodes);
                        for (xmlTblID_Workers_NodesI := 0;
                             xmlTblID_Workers_NodesI < xmlTblID_Workers_NodesCount;
                             xmlTblID_Workers_NodesI++)
                        {
                          xmlRowID_Wr := XMLDOMNodeList_Get_Item(xmlTblID_Workers_Nodes, xmlTblID_Workers_NodesI);
                          if xmlRowID_Wr <> 0
                          {
                            if 'WORKERSROW' = XMLDOMNode_Get_NodeName(xmlRowID_Wr)
                            {
                              xmlRowID_Wr_Nodes := XMLDOMNode_Get_ChildNodes(xmlRowID_Wr);
                              if xmlRowID_Wr_Nodes <> 0
                              {
                                xmlRowID_Wr_NodesCount := XMLDOMNodeList_Get_Length(xmlRowID_Wr_Nodes);
                                //<WORKERSALGID><WORKERSTREJIM><WORKERSTWORKER><NORMFUNCDATASET><NORMPROCDATASET><ADMFUNCDATASET><ADMPROCDATASET>
                                ClearAdvRecord(SetWorkersBuf);
                                for (xmlRowID_Wr_NodesI := 0;
                                     xmlRowID_Wr_NodesI < xmlRowID_Wr_NodesCount;
                                     xmlRowID_Wr_NodesI++)
                                {
                                  xmlRowID_Wr_SubNodes := XMLDOMNodeList_Get_Item(xmlRowID_Wr_Nodes, xmlRowID_Wr_NodesI);
                                  if xmlRowID_Wr_SubNodes <> 0
                                  {
                                    case XMLDOMNode_Get_NodeName(xmlRowID_Wr_SubNodes) of
//                                      'WORKERSALGID':
                                      'WORKERSTREJIM': 
                                      {
                                        SetWorkersBuf.bIns := true;
                                        SetWorkersBuf.TRegimName := GetValueFld(xmlRowID_Wr_SubNodes);
#ifdef __MF_DEBUG__
                                         #LogS('WORKERSTREJIM ' + GetValueFld(xmlRowID_Wr_SubNodes));
#end
                                      }
//                                      'WORKERSTREJCOD':
                                      'WORKERSTWORKER': 
                                      {
                                        SetWorkersBuf.bIns := true;
                                        SetWorkersBuf.TWorkerName := GetValueFld(xmlRowID_Wr_SubNodes);
#ifdef __MF_DEBUG__
                                         #LogS('WORKERSTWORKER ' + GetValueFld(xmlRowID_Wr_SubNodes));
#end
                                      }
//                                      'WORKERSTWORCOD':
                                      'NORMFUNCDATASET':
                                      {
                                        #dclFunc(c_NF, c_NP, 'NORMFUNCROW', 'NORMFUNCNO', 'NORMFUNCFUNC', 'NORMFUNCNOTE')
                                      }
                                      'NORMPROCDATASET':
                                      {
                                        #dclProc(c_NF, c_NP, 'NORMPROCROW', 'NORMPROCNO', 'NORMPROCIF', 'NORMPROCT', 'NORMPROCF', 'NORMPROCNOTE')
                                      }
                                      'ADMFUNCDATASET':
                                      {
                                        #dclFunc(c_UF, c_UP, 'ADMFUNCROW', 'ADMFUNCNO', 'ADMFUNCFUNC', 'ADMFUNCNOTE')
                                      }
                                      'ADMPROCDATASET':
                                      {
                                        #dclProc(c_UF, c_UP, 'ADMPROCROW', 'ADMPROCNO', 'ADMPROCIF', 'ADMPROCT', 'ADMPROCF', 'ADMPROCNOTE')
                                      }
                                    end;
                                    XMLDOMNode_Release(xmlRowID_Wr_SubNodes);
                                  }
                                }
                                XMLDOMNode_Release(xmlRowID_Wr_Nodes);
                              }
                            }
                            XMLDOMNode_Release(xmlRowID_Wr);
                          }
                        }
                        XMLDOMNode_Release(xmlTblID_Workers_Nodes);
                      }
                    }
                  end;
                  XMLDOMNode_Release(xmlRowID_Alg_SubNodes);
                }
              }
              XMLDOMNode_Release(xmlRowID_Alg_Nodes);
            }
          }
          XMLDOMNode_Release(xmlRowID_Alg);
        }
      } 
      XMLDOMNode_Release(xmlTblID_Alg_Nodes);
    }
    XMLDOMDoc_Done(xmlDocID);
  }
  _except
    on excXML_IE:
    {
    }
  _finally
  {
    CurrentF := c_F;
    CurrentP := c_P;
    AlgNastrChange;

    RescanPanel(tnAlgNastr);

    StopVisual('', 0);
  }
}
Жду выхода Вселенная 2.12!
evchic
Местный житель
Сообщения: 216
Зарегистрирован: 25 апр 2006, 12:05
Откуда: г.Ростов-на-Дону
Контактная информация:

Сообщение evchic »

Код: Выделить всё

// Xml_Func.pas
function XML_New                                                       : longint; external 'G_ExpImp.dll';
function XML_LoadDoc      (longint, string)                            : boolean; external 'G_ExpImp.dll';
function XML_FindFirstDoc (longint, longint, comp, comp)               : longint; external 'G_ExpImp.dll';
function XML_FindNextDoc  (longint, longint, comp, comp)               : longint; external 'G_ExpImp.dll';
function ImportXMLField   (longint, comp, longint, comp)               : string;  external 'G_ExpImp.dll';
function XML_Done         (longint)                                    : boolean; external 'G_ExpImp.dll';
function InitXML_Doc      (longint, comp)                              : longint; external 'G_ExpImp.dll';
function XML_NewNode      (longint, longint, longint ,string)          : longint; external 'G_ExpImp.dll';
function ExportXMLField   (longint, longint, comp ,string)             : boolean; external 'G_ExpImp.dll';
function XML_SaveAs       (longint, longint, longint ,longint, string) : boolean; external 'G_ExpImp.dll';
function XML_FillMeta     (longint, comp)                              : boolean; external 'G_ExpImp.dll';
function XML_GetRoot      (longint)                                    : longint; external 'G_ExpImp.dll';
function XML_Release      (longint)                                    : boolean; external 'G_ExpImp.dll'; 
Это сразу отпадает так как не будет вестись настройка структуры в бд
evchic
Местный житель
Сообщения: 216
Зарегистрирован: 25 апр 2006, 12:05
Откуда: г.Ростов-на-Дону
Контактная информация:

Сообщение evchic »

пример посмотрю
evchic
Местный житель
Сообщения: 216
Зарегистрирован: 25 апр 2006, 12:05
Откуда: г.Ростов-на-Дону
Контактная информация:

Сообщение evchic »

Max_Fin
можно пример функции myxml_GetNode(xmlDocID, 'ALGDATASET') и GetValueFld(xmlRowID_Alg_SubNodes)
evchic
Местный житель
Сообщения: 216
Зарегистрирован: 25 апр 2006, 12:05
Откуда: г.Ростов-на-Дону
Контактная информация:

Сообщение evchic »

Все спасибо функции не нужны разобрался сам!
Спасибо за пример
Max_Fin
На пенсии
Сообщения: 797
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г. Тюмень
Контактная информация:

Сообщение Max_Fin »

Код: Выделить всё

procedure myxml_getNode(xml_src:longint;nodename:string):longint;
{
  var hnd,nodelist,lnodelist: longint;
  hnd:=0;

  nodelist:=XMLDOMDoc_GetElementsByTagName(xml_src, nodename);
  if(nodelist<>0)
  {
    lnodelist:=XMLDOMNodeList_get_Length(nodelist);
    if(lnodelist=1)
    {
      hnd:=XMLDOMNodeList_get_Item(nodelist, 0);
    }
    XMLDOMNode_Release(nodelist);
  }
  myxml_getNode:=hnd;
}

function GetValueFld(xml_pnar: LongInt): String;
{
var nodes: LongInt;
var lCount: LongInt;
var Item: LongInt;

  GetValueFld := '';
  nodes := XMLDOMNode_get_ChildNodes(xml_pnar);
        
  if nodes <> 0
  {
    lCount := XMLDOMNodeList_Get_Length(nodes);
    if lCount = 1
    {
      Item := XMLDOMNodeList_Get_Item(nodes, 0);
      GetValueFld := XMLDOMAttribute_Get_NodeValue(Item);
    }
    XMLDOMNode_Release(nodes);
  }
}
Жду выхода Вселенная 2.12!
Ответить