Delphi İle XML

Evet arkadaşlar bu yazımda size Delphi ile XML okumayı anlatacağım. Öncelikle biraz XML’den bahsedeyim. XML web sitelerinin site haritalarından tutun birçok veri iletişim sisteminde kullanılır. Kullanılmasının sebeplerinden biride, basitçe oluşturulması ve basitçe okunmasıdır. XML dosyanızın hazır olduğunu varsayarak başlıyorum.

Öncelikle örnek RSS dosyamıza bakalım…

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xml:lang="tr-TR.utf8">
 <channel>
 <item>
 <title>
 title1
 </title>
 <body>
 body1
 </body>
 </item>
 <item>
 <title>
 title2
 </title>
 <body>
 body2
 </body>
 </item>
 </channel>
</rss>

Şimdi yeni bir proje oluşturup formumuza Internet sekmesinde bir TXMLDocument bileşeni koyuyoruz ardından bir Additional sekmesinden bir TStringGrid bileşeni koyuyoruz ve birde Standart sekmesinden TButton. Koyduğmuz TButton içerisine şu kodu yazalım;

var
StartItemNode, ANode : IXMLNode;
sTitle, sBody        : WideString;
i:integer;
begin
try
//StringGrid'in ayarlamaları #başlangıç...
StringGrid1.ColCount:=2;//2 sütun
StringGrid1.RowCount:=2;//2 satır(veri okudukca artacak)
StringGrid1.FixedCols:=0;//0 sütun fixed(başlık sütun'u yok)
StringGrid1.FixedRows:=1;//1 satır fixed(başlıklar için)
StringGrid1.Cells[0,0]:='TITLE';//1.sütun başlığı
StringGrid1.Cells[1,0]:='BODY';//2.sütun başlığı
//StringGrid'in ayarlamaları #bitiş...
XMLDocument1.FileName := 'c:\test.xml';//XMLDocument'in okuyacağı dosya.
XMLDocument1.Active:=True;//XMLDocument'i aç.
StartItemNode:=
XMLDocument1.DocumentElement.ChildNodes.First.
ChildNodes.FindNode('item');//RSS'in içersindeki ilk tagın içindeki item taglarını bul (ilk tag <channel></channel>)
ANode := StartItemNode;
i:=0;
repeat
Application.ProcessMessages;
sTitle := ANode.ChildNodes['title'].Text;//Title tagını oku...
sBody  := ANode.ChildNodes['body'].Text;//Body tagını oku...
i:=i+1;
StringGrid1.RowCount:=i+1;//StringGrid'e yeni satır aç
StringGrid1.Cells[0,i]:=sTitle;//Değişkene aldığın title tagını StringGrid'e yaz
StringGrid1.Cells[1,i]:=sBody;//Değişkene aldığın body tagını StringGrid'e yaz
ANode  := ANode.NextSibling;//bir sonraki item tagına atla...
until
ANode=Nil;
finally
ShowMessage('Başarıyla Tamamlandı...');
end;
end;

Kod içerisinde gerekli açıklamaları yaptım. Bir sonraki yazımda görüşmek dileğiyle…

Tags: , , , , , , , ,

5 Responses to “Delphi İle XML”

  1. erdinç 15 Nisan 2013 at 14:23 #

    Merhaba hocam benim sorunum ise şöyle dile getireyim ….
    bilinmeyen bir xml mevcut ve o verilerimi,
    cxgrid aktarmam gerekiyor ?…
    Ne yapmam lazim.

    VeSSeLaM.

  2. Erçin 09 Kasım 2012 at 02:22 #

    Merhaba hocam verileri cekiyorum fakat şöyle bir şey yapmak istiyorum nette cook araştırdım bulamadım stringgrid e cektigimiz konu başlıkları linkli olsun istiyorum title kismi link olrak olsun konu başlıgına tıklandiginda stringgrid den yani satıra tıklandıgın webbowser1 de acilsin istiyorum ek olarak lütfen bir siteye nasıl login olunur delphi ile onuda anlatirsaniz cook makbule gecer xml cektigim site üye girişi istiyor ve buda hata vermesine neden oluyor
    hata bu
    http://img607.imageshack.us/img607/6160/ekranalntscs.png

    güzel anlatiminiz için çook teşekkürler cevabınızı ivedikle bekliyorum

  3. berk 05 Kasım 2012 at 11:05 #

    Çok açıklayıcı teşekkürler (:

Leave a Reply

*