powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / XML-парсинг
10 сообщений из 10, страница 1 из 1
XML-парсинг
    #32339276
xyz777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
добрый день мастера!
есть исходный xml файл..

не подскажете как считывать значения тегов и атрибутов автоматически и записать хотя бы в массив?
типа arr[1]= "Vasya Pupkin";
arr[2]="7269C18D00010000005E";
и так далее

применил XMLDocument, но нихрена не понял.. примерчик какой нить адйте..

заране спасибо..

<document>
<bank>
<customer name="Vasya Pupkin"
<merchant cert_id="7269C18D00010000005E" name="Delphi
<order order_id="282" amount="3100" currency="398">
<department merchant_id="90028101" amount="1300"/>
</order>
</merchant>
<merchant_sign type="RSA">
p25i1rUH7StnhOfnkHSOHguuPMePaGXtiPGEOrJE4bof1gFVH19mhDyHjfWa6OeJ80fidyvVf1X4
ewyP0yG4GxJSl0VyXz7+PNLsbs1lJe42d1fixvozhJSSYN6fAxMN8hhDht6S81YK3GbDTE7GH498
pU9HGuGAoDVjB+NtrHk=
</merchant_sign>
</customer>
<customer_sign type="SSL">
4817C411000100000084
</customer_sign>
<results timestamp="4/6/2001 2:52:44 PM">
</results>
</bank>

<bank_sign cert_id="14276668000100000028" type="SHA/RSA">
JI3RZMEvexNlDmKsOQhe0pzHuKijnbhvnLu99qh7h+Ju8HvSfGNbEJxXUL58M94tXvu7w0BXSY7M
HePGqz32JuMLAncuzyMwq845linW/sH/WvbZ+6SSYfxDMnvgX0S/pKxbhSXs7lGVBngXOwq7Bhsk
8GcDUkWAM5UAsKpEKoI=
</bank_sign>
</document>
...
Рейтинг: 0 / 0
XML-парсинг
    #32339334
Фотография Teo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В Delphi 6 есть такая приблуда XML Data Binding назвается...
Скармливаешь ей XML-файло и она тебе генерит готовый парсер...
Вызывается она File->New->Other... далее вкладка New...
...
Рейтинг: 0 / 0
XML-парсинг
    #32339541
Фотография Mihail R.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня Delphi7, там в каталогах C:\Program Files\Borland\Delphi7\Demos\Internet\XML* куча примеров. очень популярно разобрано.
...
Рейтинг: 0 / 0
XML-парсинг
    #32339559
Фотография Teo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XML Data Binding есть и в Delphi 7...
...
Рейтинг: 0 / 0
XML-парсинг
    #32339650
xyz777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а как использовать этот модуль XML Data Binding ?? фнукции не доступны :( подскажите чайнику..

use modul я это сдеала.. но млин там тока 3 функции public.. newdocumdent, loaddocument и getdocument
...
Рейтинг: 0 / 0
XML-парсинг
    #32339730
Фотография Teo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Модуль, сгенерированный XML Data Binding...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
{*****************************************************************************}
{                                                                             }
{                           Delphi XML Data Binding                           }
{                                                                             }
{         Generated on:  20 . 11 . 2003   16 : 34 : 22                                    }
{       Generated from: E:\Program Files\Borland\Delphi6\Projects\XML\ 1 .xml   }
{                                                                             }
{*****************************************************************************}
unit XMLwork;

interface

uses xmldom, XMLDoc, XMLIntf;

type

{ Forward Decls }

  IXMLTrafficReportType = interface;
  IXMLFilterType = interface;
  IXMLFilterTypeList = interface;

{ IXMLTrafficReportType }

  IXMLTrafficReportType = interface(IXMLNode)
    ['{A3561C6F-CB26-4793-B158-29865F5AECE2}']
    { Property Accessors }
    function Get_Filter: IXMLFilterTypeList;
    function Get_LastModified: WideString;
    procedure Set_LastModified(Value: WideString);
    { Methods & Properties }
    property Filter: IXMLFilterTypeList read Get_Filter;
    property LastModified: WideString read Get_LastModified write Set_LastModified;
  end;

{ IXMLFilterType }

  IXMLFilterType = interface(IXMLNode)
    ['{0B34646C-E6A2-4725-A6DA-B57F722ED16F}']
    { Property Accessors }
    function Get_Id: WideString;
    function Get_Name: WideString;
    function Get_Sent: WideString;
    function Get_Recv: WideString;
    procedure Set_Id(Value: WideString);
    procedure Set_Name(Value: WideString);
    procedure Set_Sent(Value: WideString);
    procedure Set_Recv(Value: WideString);
    { Methods & Properties }
    property Id: WideString read Get_Id write Set_Id;
    property Name: WideString read Get_Name write Set_Name;
    property Sent: WideString read Get_Sent write Set_Sent;
    property Recv: WideString read Get_Recv write Set_Recv;
  end;

{ IXMLFilterTypeList }

  IXMLFilterTypeList = interface(IXMLNodeCollection)
    ['{75CDD80F-49C6-496C-B7DA-82AB8AFCEF75}']
    { Methods & Properties }
    function Add: IXMLFilterType;
    function Insert(const Index: Integer): IXMLFilterType;
    function Get_Item(Index: Integer): IXMLFilterType;
    property Items[Index: Integer]: IXMLFilterType read Get_Item; default;
  end;

{ Forward Decls }

  TXMLTrafficReportType = class;
  TXMLFilterType = class;
  TXMLFilterTypeList = class;

{ TXMLTrafficReportType }

  TXMLTrafficReportType = class(TXMLNode, IXMLTrafficReportType)
  private
    FFilter: IXMLFilterTypeList;
  protected
    { IXMLTrafficReportType }
    function Get_Filter: IXMLFilterTypeList;
    function Get_LastModified: WideString;
    procedure Set_LastModified(Value: WideString);
  public
    procedure AfterConstruction; override;
  end;

{ TXMLFilterType }

  TXMLFilterType = class(TXMLNode, IXMLFilterType)
  protected
    { IXMLFilterType }
    function Get_Id: WideString;
    function Get_Name: WideString;
    function Get_Sent: WideString;
    function Get_Recv: WideString;
    procedure Set_Id(Value: WideString);
    procedure Set_Name(Value: WideString);
    procedure Set_Sent(Value: WideString);
    procedure Set_Recv(Value: WideString);
  end;

{ TXMLFilterTypeList }

  TXMLFilterTypeList = class(TXMLNodeCollection, IXMLFilterTypeList)
  protected
    { IXMLFilterTypeList }
    function Add: IXMLFilterType;
    function Insert(const Index: Integer): IXMLFilterType;
    function Get_Item(Index: Integer): IXMLFilterType;
  end;

{ Global Functions }

function GetTrafficReport(Doc: IXMLDocument): IXMLTrafficReportType;
function LoadTrafficReport(const FileName: WideString): IXMLTrafficReportType;
function NewTrafficReport: IXMLTrafficReportType;

implementation

{ Global Functions }

function GetTrafficReport(Doc: IXMLDocument): IXMLTrafficReportType;
begin
  Result := Doc.GetDocBinding('TrafficReport', TXMLTrafficReportType) as IXMLTrafficReportType;
end;
function LoadTrafficReport(const FileName: WideString): IXMLTrafficReportType;
begin
  Result := LoadXMLDocument(FileName).GetDocBinding('TrafficReport', TXMLTrafficReportType) as IXMLTrafficReportType;
end;

function NewTrafficReport: IXMLTrafficReportType;
begin
  Result := NewXMLDocument.GetDocBinding('TrafficReport', TXMLTrafficReportType) as IXMLTrafficReportType;
end;

{ TXMLTrafficReportType }

procedure TXMLTrafficReportType.AfterConstruction;
begin
  RegisterChildNode('Filter', TXMLFilterType);
  FFilter := CreateCollection(TXMLFilterTypeList, IXMLFilterType, 'Filter') as IXMLFilterTypeList;
  inherited;
end;

function TXMLTrafficReportType.Get_Filter: IXMLFilterTypeList;
begin
  Result := FFilter;
end;

function TXMLTrafficReportType.Get_LastModified: WideString;
begin
  Result := ChildNodes['LastModified'].Text;
end;

procedure TXMLTrafficReportType.Set_LastModified(Value: WideString);
begin
  ChildNodes['LastModified'].NodeValue := Value;
end;

{ TXMLFilterType }

function TXMLFilterType.Get_Id: WideString;
begin
  Result := AttributeNodes['Id'].Text;
end;

procedure TXMLFilterType.Set_Id(Value: WideString);
begin
  SetAttribute('Id', Value);
end;

function TXMLFilterType.Get_Name: WideString;
begin
  Result := ChildNodes['Name'].Text;
end;

procedure TXMLFilterType.Set_Name(Value: WideString);
begin
  ChildNodes['Name'].NodeValue := Value;
end;

function TXMLFilterType.Get_Sent: WideString;
begin
  Result := ChildNodes['Sent'].Text;
end;

procedure TXMLFilterType.Set_Sent(Value: WideString);
begin
  ChildNodes['Sent'].NodeValue := Value;
end;

function TXMLFilterType.Get_Recv: WideString;
begin
  Result := ChildNodes['Recv'].Text;
end;

procedure TXMLFilterType.Set_Recv(Value: WideString);
begin
  ChildNodes['Recv'].NodeValue := Value;
end;

{ TXMLFilterTypeList }

function TXMLFilterTypeList.Add: IXMLFilterType;
begin
  Result := AddItem(- 1 ) as IXMLFilterType;
end;

function TXMLFilterTypeList.Insert(const Index: Integer): IXMLFilterType;
begin
  Result := AddItem(Index) as IXMLFilterType;
end;

function TXMLFilterTypeList.Get_Item(Index: Integer): IXMLFilterType;
begin
  Result := List[Index] as IXMLFilterType;
end;

end.


Собственно, парсинг документа...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
unit XML;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, ValEdit, StdCtrls, XMLWork;

type
  TfmMain = class(TForm)
    btnParse: TButton;
    sgResult: TStringGrid;
    procedure btnParseClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  fmMain: TfmMain;

implementation

uses XMLIntf;

{$R *.dfm}

procedure TfmMain.btnParseClick(Sender: TObject);
var
  Rep: IXMLTrafficReportType;
  i: Integer;
begin
  Rep := LoadTrafficReport('1.xml');
  // отрисовка заголовка грида
  sgResult.Cells[ 0 ,  0 ] := 'Id';
  sgResult.Cells[ 1 ,  0 ] := 'Name';
  sgResult.Cells[ 2 ,  0 ] := 'Sent';
  sgResult.Cells[ 3 ,  0 ] := 'Recv';
  // парсинг XML-документа
  for i:=  0  to Rep.Filter.Count -  1  do
    begin
      sgResult.Cells[ 0 , i+ 1 ] := Rep.Filter.Items[i].Id;
      sgResult.Cells[ 1 , i+ 1 ] := Rep.Filter.Items[i].Name;
      sgResult.Cells[ 2 , i+ 1 ] := Rep.Filter.Items[i].Sent;
      sgResult.Cells[ 3 , i+ 1 ] := Rep.Filter.Items[i].Recv;
    end;
  sgResult.Cells[ 0 , i+ 1 ] := Rep.LastModified;
end;
end.


Надеюсь, что разберешься....
...
Рейтинг: 0 / 0
XML-парсинг
    #32349966
xyz777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо! разобрался! но как изменить значение тэга???

var mdoc:IXMLDocumentType;


mdoc.Bank.Customer.SetAttribute('name', 'dfgdfg');

так не получается!
...
Рейтинг: 0 / 0
XML-парсинг
    #32350087
Фотография Teo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй так:
mdoc.Bank.Customer.Set_Name('Значение');
...
Рейтинг: 0 / 0
XML-парсинг
    #32351455
xyz777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Set_name делаю, но не сохраняется и не ругается ни на что..
как сохранить?
...
Рейтинг: 0 / 0
XML-парсинг
    #32351531
sv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sv
Гость
mdoc.Bank.Customer.text := 'New Value'

может так?
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / XML-парсинг
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]