Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
E fatura okuma hakkında
#11
E fatura okuma hakkında sürekli istek geldiği için detaylı bir okuma örneğini burada paylaşalım ki arayan bulabilsin dedim. Aşağıda tüm Node ları okuyan bir xml okuma örneği var, bu olayı programlarına entegre etmek isteyen arkadaşlar geliştirebilirler.

Önce Uses kısmı
Xml.xmldom, Xml.XMLIntf, Xml.XMLDoc

Form'a bir button birde memo koyup aşağıdaki şekilde kodlayabilirsiniz.

  public
   { Public declarations }
procedure NOdeOku(A:IXMLNode);
 end;

var
 Form1: TForm1;
Girinti : Integer;
implementation

{$R *.dfm}

Function BoslukAt(Deger:Integer):String;
var
x:Integer;
Begin
Result := '';
for x:=1 to Deger Do Result := Result + ' ';
End;

procedure TForm1.NOdeOku(A:IXMLNode);
VAR
ANode : IXMLNode;
Begin
Girinti := Girinti + 3;
 ANode:=A.ChildNodes.First;
repeat
    if Assigned(ANode) then begin
 if (ANode.IsTextElement=true)
     Then Begin
        Memo1.Lines.Add(BoslukAt(Girinti)+': '+ANode.LocalName+' -> '+ANode.Text);
          End Else Begin
          Memo1.Lines.Add(BoslukAt(Girinti)+'- '+ ANode.LocalName);
          NOdeOku(ANODE);
                   End;
 ANode  := ANode.NextSibling;//bir sonraki node ye atla...
                            end;
until ANode=Nil;
End;


procedure TForm1.Button1Click(Sender: TObject);
var
D : IXMLDocument;
ANode: IXMLNode;
begin
memo1.Lines.Clear;
D:= LoadXMLDocument('OkunacakXmlDosyasi.xml');
D.Active := True ;
ANode:=D.DocumentElement.ChildNodes.First; // ilk node invoice tir
repeat
if Assigned(ANode)
  Then begin
 if (ANode.IsTextElement=True)
     Then Begin
        Memo1.Lines.Add(BoslukAt(Girinti)+': '+ANode.LocalName+' -> '+ANode.Text);
          End Else Begin
     if (ANode.NodeName<>'ext:UBLExtensions') and
        (ANode.NodeName<>'cac:AdditionalDocumentReference') and
        (ANode.NodeName<>'cac:Signature') 
         Then Begin
              Memo1.Lines.Add('*'+ ANode.NodeName); // Ana Node (Ana Baslik)
              Girinti := 0;
              NOdeOku(ANODE);
              End;
                   End;
 ANode  := ANode.NextSibling;//bir sonraki node ye atla...
       End;
until ANode=Nil;
end;
WWW
Cevapla
#12
Eline sağlık hocam çok teşekkür ederim
Bizde bilirdik firavunun yanında olmayı, musa'nın haklı olduğunu bilmeseydik
Cevapla
#13
Klavyenize sağlık üstad.
Cevapla
#14
Teşekkürler
Cevapla
#15
Elinize sağlık
"…De ki: "Hiç bilenlerle bilmeyenler bir olur mu? Şüphesiz, temiz akıl sahipleri öğüt alıp-düşünürler" (Zümer Suresi, 9)
Cevapla
#16
(04-12-2018, Saat: 10:05)esistem Adlı Kullanıcıdan Alıntı: E fatura okuma hakkında sürekli istek geldiği için detaylı bir okuma örneğini burada paylaşalım ki arayan bulabilsin dedim. Aşağıda tüm Node ları okuyan bir xml okuma örneği var, bu olayı programlarına entegre etmek isteyen arkadaşlar geliştirebilirler.

Önce Uses kısmı
Xml.xmldom, Xml.XMLIntf, Xml.XMLDoc

Form'a bir button birde memo koyup aşağıdaki şekilde kodlayabilirsiniz.

  public
   { Public declarations }
procedure NOdeOku(A:IXMLNode);
 end;

var
 Form1: TForm1;
Girinti : Integer;
implementation

{$R *.dfm}

Function BoslukAt(Deger:Integer):String;
var
x:Integer;
Begin
Result := '';
for x:=1 to Deger Do Result := Result + ' ';
End;

procedure TForm1.NOdeOku(A:IXMLNode);
VAR
ANode : IXMLNode;
Begin
Girinti := Girinti + 3;
 ANode:=A.ChildNodes.First;
repeat
    if Assigned(ANode) then begin
 if (ANode.IsTextElement=true)
     Then Begin
        Memo1.Lines.Add(BoslukAt(Girinti)+': '+ANode.LocalName+' -> '+ANode.Text);
          End Else Begin
          Memo1.Lines.Add(BoslukAt(Girinti)+'- '+ ANode.LocalName);
          NOdeOku(ANODE);
                   End;
 ANode  := ANode.NextSibling;//bir sonraki node ye atla...
                            end;
until ANode=Nil;
End;


procedure TForm1.Button1Click(Sender: TObject);
var
D : IXMLDocument;
ANode: IXMLNode;
begin
memo1.Lines.Clear;
D:= LoadXMLDocument('OkunacakXmlDosyasi.xml');
D.Active := True ;
ANode:=D.DocumentElement.ChildNodes.First; // ilk node invoice tir
repeat
if Assigned(ANode)
  Then begin
 if (ANode.IsTextElement=True)
     Then Begin
        Memo1.Lines.Add(BoslukAt(Girinti)+': '+ANode.LocalName+' -> '+ANode.Text);
          End Else Begin
     if (ANode.NodeName<>'ext:UBLExtensions') and
        (ANode.NodeName<>'cac:AdditionalDocumentReference') and
        (ANode.NodeName<>'cac:Signature') 
         Then Begin
              Memo1.Lines.Add('*'+ ANode.NodeName); // Ana Node (Ana Baslik)
              Girinti := 0;
              NOdeOku(ANODE);
              End;
                   End;
 ANode  := ANode.NextSibling;//bir sonraki node ye atla...
       End;
until ANode=Nil;
end;

Teşekkürler.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  SQL Table Type parametre gecisi hakkında (Çözüldü) adelphiforumz 1 148 09-04-2026, Saat: 15:53
Son Yorum: adelphiforumz
  Video Oynatma Hakkında adelphiforumz 7 844 17-12-2025, Saat: 07:36
Son Yorum: mrmarman
  nduWlanAPI Kullanımı hakkında nurah 3 803 09-09-2025, Saat: 09:33
Son Yorum: RAD Coder
  AES Şifreleme Hakkında tmrksmt 25 5.845 06-09-2025, Saat: 22:12
Son Yorum: delphi.developer
  SuperObject dosyaları hakkında adelphiforumz 2 622 18-06-2025, Saat: 11:02
Son Yorum: engerex



Konuyu Okuyanlar: 1 Ziyaretçi