1

Konu: Xml Satır Satır Okumak

Elimde Bir Xml dosyam var bu dosyamda satır satır okuma işlemi yapıp ihtiyacım olmayan satırları değerlendirmeye almak istemiyorum komple veri olarak okuma ile ilgili bilgiler buldum fakat yada <isim></isim> bu değeri bulmak gibi bi kavrama rastlayamadım yardımcı olacak arkadaşlara şimdiden teşekkür ederim
İyi Çalışmalar

2

Re: Xml Satır Satır Okumak

XML'i satir satir okumak diye birsey olamaz, cunku 1000 satirlik bir XML tek satir olarak da yazilabilir. Ornegin:

<root>
  <data>
   <isim>Ali</isim>
 </data>
</root>

ile:

<root><data><isim>Ali</isim></data></root>

ayni XML. Satirdan kastin tablodaki record gibiyse ve XML basit bir XML ise:

Visual Fox Pro
XMLToCursor("xmldosyasi.xml", "cursorAdi", 512)

seklinde bir cursora alip oradan satir satir okuyabilirsin.

Daha karmasik XML'ler icin ise XMLDataAdapter var ya da onu da asiyorsa, MSXML.DOMDocument ile parse edebilirsin.

DOMDocument parse isleminde genel yapi:

Visual Fox Pro
Local xDOM As 'MSXML2.DOMDocument'

xDOM = Newobject('MSXML2.DOMDocument')
xDOM.LoadXML(m.lcXML)
loNodes = xDOM.getElementsByTagName("tagAdi")
 
For Each loNode In m.loNodes
  ...
Endfor

Senin < isim > </ isim > gibi taglari bulma isleminde burada tagAdi yerine isim kullanman yeterli, tum isim taglarini bulmus oluyorsun. Eger belli bir elementin altindakiler lazim ise o zaman o nodda getElementsByTagName() kullaniyorsun vs ( xDOM.getElementsByTagName yerine loNode.getElementsByTagName gibi).

Asagidaki ornekte CNN Turk kanalinin rss feedinin XMLDom ile parse edilis ornegi var, neden CNN Turk dersen hicbire fikrim yok, gecmiste nereden esip onu kullandigim hakkinda,

http://www.cnnturk.com/servisler/rss/anasayfa.rss

adresine gidersen bize nasil birsey dondugunu gorursun (eger IE gibi bir browser ile gidersen formatlanmis halini goreceksin 'View source" ile aslinda ne aldigina bak):

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>CNN Türk</title>
    <link>http://www.cnnturk.com</link>
    <description>CNN Türk</description>
    <item>
      ....
    </item>
    <item>
       ...
    </item>
  </channel>
</rss>

gibi bir yapi var. Bizi ilgilendiren buradan < item > < /item > taglarindaki bilgileri alip bir cursor olusturmak:

Local url, lcXML, objHTTP As "MSXML2.XMLHTTP"
url="http://www.cnnturk.com/servisler/rss/anasayfa.rss"
objHTTP = Createobject("MSXML2.XMLHTTP")
objHTTP.Open("GET", m.url,.F.)
objHTTP.Send()

lcXML = objHTTP.ResponseText

Local loDOM      As "MSXML2.IXMLDOMDocument"
Local loNodes    As "MSXML2.IXMLDOMNodeList"
Local loNode     As "MSXML2.IXMLDOMNode"
Local myXML

loDOM = Newobject("MSXML2.DOMDocument.4.0")
loDOM.LoadXML(m.lcXML)
loNodes = loDOM.getElementsByTagName("item")

Set Textmerge To Memvar myXML On Noshow
\\<data>
For Each loNode In loNodes
\    << m.loNode.xml >>
Endfor
\</data>
Set Textmerge To
Set Textmerge Off
Xmltocursor(m.myXML,'myRSS')

* Aldigimiza bakalim
Select myRSS
Browse

3

Re: Xml Satır Satır Okumak

Merhaba Çetin

Güzel anlatmışın, sağol. Bazı şeyler benim içinde yeni idi. Mersi!

Bir projenin bitmesi için 3 seçenek vardır: hızlı, ucuz, iyi. Bu seçeneklerden iki tanesini seçiniz.

4

Re: Xml Satır Satır Okumak

Sağolun hocam cevabınız için vakit bulamamıştım tekrar bakıcam konuya ilgimize çok teşekkür ederim.