Elimdeki XML'i pars ederken sonsuz döngüde kalıyorum ve birtürlü işlemi istediğim gibi tamamlıyamadım
acaba kodda nerde bir hata var yardımcı olabilirmisiniz
Teşekkürler
Kod: Tümünü seç
object Form1: TForm1
Left = 0
Top = 0
Caption = 'Form1'
ClientHeight = 640
ClientWidth = 635
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object Button1: TButton
Left = 321
Top = 8
Width = 75
Height = 25
Caption = 'Button1'
TabOrder = 0
OnClick = Button1Click
end
object Memo1: TMemo
Left = 8
Top = 8
Width = 313
Height = 601
Lines.Strings = (
'<?xml version="1.0" encoding="utf-8" ?>'
'<!-- Versiyon 1.0 -->'
'<Kayitlar>'
'<Firma>DENE FIRMASI</Firma>'
'<versiyon>1.0</versiyon>'
'<FirmaKod>12001010031</FirmaKod>'
'<Evrak>'
'<serino>8680001086443</serino>'
'<tarih>09/10/2015</tarih>'
'<Sirano>18959103</Sirano>'
'<OdemeDetay>'
'<odemetarihi>06/01/2016</odemetarihi>'
'<OdemeToplam>126.36</OdemeToplam>'
'<OzelIskonto>0</OzelIskonto>'
'<geneliskonto>0</geneliskonto>'
'<taksTagayisi>1</taksTagayisi>'
'<taksitaralik>0</taksitaralik>'
'<odemeplani>'
'<vade>'
'<vadetarihi>06/01/2016</vadetarihi>'
'<vadetutari>126.36</vadetutari>'
'</vade>'
'</odemeplani>'
'<Urunler>'
'<UrunAdi>URUN TEST 1</UrunAdi>'
'<EtiketNo>8699976090140</EtiketNo>'
'<Fiyat1>25.44</Fiyat1>'
'<Fiyat2>34.35</Fiyat2>'
'<Fiyat3>34.35</Fiyat3>'
'<miktar>3</miktar>'
'<EkMiktar>0</EkMiktar>'
'<iskontoorani1>36.5000</iskontoorani1>'
'<iskontoorani2>0.0000</iskontoorani2>'
'<Indorani>20.00</Indorani>'
'<kdv>8</kdv>'
'<EvrakTipi>0</EvrakTipi>'
'<Urunlertipi>0</Urunlertipi>'
'<SonTarih>01/02/2017</SonTarih>'
'<IslemKod>H</IslemKod>'
'<Tag>'
'<Tag1>08699976090140</Tag1>'
'<Tag1x>02934</Tag1x>'
'<Tag1y>00000000000000515418</Tag1y>'
'<Tag1z>170731</Tag1z>'
'</Tag>'
'<Tag>'
'<Tag1>08699976090140</Tag1>'
'<Tag1x>02934</Tag1x>'
'<Tag1y>00000000000000515434</Tag1y>'
'<Tag1z>170731</Tag1z>'
'</Tag>'
'<Tag>'
'<Tag1>08699976090140</Tag1>'
'<Tag1x>02934</Tag1x>'
'<Tag1y>00000000000000515426</Tag1y>'
'<Tag1z>170731</Tag1z>'
'</Tag>'
'</Urunler>'
'<Urunler>'
'<UrunAdi>URUN TEST 2</UrunAdi>'
'<EtiketNo>8697529350079</EtiketNo>'
'<Fiyat1>5.70</Fiyat1>'
'<Fiyat2>7.69</Fiyat2>'
'<Fiyat3>7.69</Fiyat3>'
'<miktar>2</miktar>'
'<EkMiktar>0</EkMiktar>'
'<iskontoorani1>7.0000</iskontoorani1>'
'<iskontoorani2>0.0000</iskontoorani2>'
'<Indorani>20.00</Indorani>'
'<kdv>8</kdv>'
'<EvrakTipi>0</EvrakTipi>'
'<Urunlertipi>0</Urunlertipi>'
'<SonTarih>01/05/2020</SonTarih>'
'<IslemKod>H</IslemKod>'
'<Tag>'
'<Tag1>08699546350087</Tag1>'
'<Tag1x>TRT0DVV</Tag1x>'
'<Tag1y>577522830526</Tag1y>'
'<Tag1z>200504</Tag1z>'
'</Tag>'
'<Tag>'
'<Tag1>08699546350087</Tag1>'
'<Tag1x>TRT0DVV</Tag1x>'
'<Tag1y>578097297814</Tag1y>'
'<Tag1z>200504</Tag1z>'
'</Tag>'
'</Urunler>'
'<Urunler>'
'<UrunAdi>URUN TEST 3(BETAS</UrunAdi>'
'<EtiketNo>8699738380700</EtiketNo>'
'<Fiyat1>4.80</Fiyat1>'
'<Fiyat2>6.48</Fiyat2>'
'<Fiyat3>6.48</Fiyat3>'
'<miktar>2</miktar>'
'<EkMiktar>0</EkMiktar>'
'<iskontoorani1>7.0000</iskontoorani1>'
'<iskontoorani2>0.0000</iskontoorani2>'
'<Indorani>20.00</Indorani>'
'<kdv>8</kdv>'
'<EvrakTipi>0</EvrakTipi>'
'<Urunlertipi>0</Urunlertipi>'
'<SonTarih>01/12/2018</SonTarih>'
'<IslemKod>H</IslemKod>'
'<Tag>'
'<Tag1>08699738380700</Tag1>'
'<Tag1x>22055124</Tag1x>'
'<Tag1y>15000133102713</Tag1y>'
'<Tag1z>181231</Tag1z>'
'</Tag>'
'<Tag>'
'<Tag1>08699738380700</Tag1>'
'<Tag1x>22055124</Tag1x>'
'<Tag1y>15000133106277</Tag1y>'
'<Tag1z>181231</Tag1z>'
'</Tag>'
'</Urunler>'
'<Urunler>'
'<UrunAdi>URUN TEST 4</UrunAdi>'
'<EtiketNo>8699522521456</EtiketNo>'
'<Fiyat1>5.27</Fiyat1>'
'<Fiyat2>7.12</Fiyat2>'
'<Fiyat3>7.12</Fiyat3>'
'<miktar>10</miktar>'
'<EkMiktar>0</EkMiktar>'
'<iskontoorani1>7.0000</iskontoorani1>'
'<iskontoorani2>0.0000</iskontoorani2>'
'<Indorani>20.00</Indorani>'
'<kdv>8</kdv>'
'<EvrakTipi>0</EvrakTipi>'
'<Urunlertipi>0</Urunlertipi>'
'<SonTarih>01/06/2017</SonTarih>'
'<IslemKod>H</IslemKod>'
'<Tag>'
'<Tag1>08699522521456</Tag1>'
'<Tag1x>GM3E</Tag1x>'
'<Tag1y>70388490395869</Tag1y>'
'<Tag1z>170630</Tag1z>'
'</Tag>'
'<Tag>'
'<Tag1>08699522521456</Tag1>'
'<Tag1x>GM3E</Tag1x>'
'<Tag1y>70388490395888</Tag1y>'
'<Tag1z>170630</Tag1z>'
'</Tag>'
'<Tag>'
'<Tag1>08699522521456</Tag1>'
'<Tag1x>GM3E</Tag1x>'
'<Tag1y>70388490395907</Tag1y>'
'<Tag1z>170630</Tag1z>'
'</Tag>'
'<Tag>'
'<Tag1>08699522521456</Tag1>'
'<Tag1x>GM3E</Tag1x>'
'<Tag1y>70388490395926</Tag1y>'
'<Tag1z>170630</Tag1z>'
'</Tag>'
'<Tag>'
'<Tag1>08699522521456</Tag1>'
'<Tag1x>GM3E</Tag1x>'
'<Tag1y>70388490395945</Tag1y>'
'<Tag1z>170630</Tag1z>'
'</Tag>'
'<Tag>'
'<Tag1>08699522521456</Tag1>'
'<Tag1x>GM3E</Tag1x>'
'<Tag1y>70388490395964</Tag1y>'
'<Tag1z>170630</Tag1z>'
'</Tag>'
'<Tag>'
'<Tag1>08699522521456</Tag1>'
'<Tag1x>GM3E</Tag1x>'
'<Tag1y>70388490395983</Tag1y>'
'<Tag1z>170630</Tag1z>'
'</Tag>'
'<Tag>'
'<Tag1>08699522521456</Tag1>'
'<Tag1x>GM3E</Tag1x>'
'<Tag1y>70388490396002</Tag1y>'
'<Tag1z>170630</Tag1z>'
'</Tag>'
'<Tag>'
'<Tag1>08699522521456</Tag1>'
'<Tag1x>GM3E</Tag1x>'
'<Tag1y>70388490396021</Tag1y>'
'<Tag1z>170630</Tag1z>'
'</Tag>'
'<Tag>'
'<Tag1>08699522521456</Tag1>'
'<Tag1x>GM3E</Tag1x>'
'<Tag1y>70388490396040</Tag1y>'
'<Tag1z>170630</Tag1z>'
'</Tag>'
'</Urunler>'
'</OdemeDetay>'
'</Evrak>'
'</Kayitlar>'
'')
TabOrder = 1
end
object Memo2: TMemo
Left = 402
Top = 8
Width = 225
Height = 601
Lines.Strings = (
'Memo2')
TabOrder = 2
end
end
Kod: Tümünü seç
unit XmlPArs;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls,
InvokeRegistry, SOAPHTTPClient, Types, XSBuiltIns, NativeXml,
SOAPHTTPTrans, Wininet, xmldom, ActiveX, IdHTTP, IdComponent,
MSXML, XMLIntf;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
Memo2: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure prc_NodeToNameAndText(pNode:IXMLDomNode);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.prc_NodeToNameAndText(pNode:IXMLDomNode);
var
X : Integer;
Node : IXMLDomNode;
begin
Node := pNode;
while Node <> nil do
begin
if Node.childNodes.length > 1 then
for X := 0 to Node.childNodes.length - 1 do
prc_NodeToNameAndText(Node.childNodes.item[X]);
if not( (Node.nodeName = '') and (Node.nodeName = 'Null') ) then
Memo2.Lines.Add(Node.nodeName + '=(' + Trim(Node.text) +')')
else
Memo2.Lines.Add(' ');
Node := Node.nextSibling;
end;
Memo2.Lines.Add(' ');
end;
procedure TForm1.Button1Click(Sender: TObject);
var
FileStream: TextFile;
XMLDoc: IXMLDomDocument;
NodeMain : IXMLDomNode;
XMLText : IXMLDOMText;
I:Integer;
begin
XMLDoc := CoDOMDocument.Create;
XMLDoc.loadXML(Memo1.Text);
if XMLDoc.documentElement = nil then Exit; // Add proper Error handling.
try
NodeMain := XMLDoc.documentElement.firstChild;
prc_NodeToNameAndText(NodeMain);
finally
end;
end;
end.