XML içinde tekrarlayan veriyi okuma sorunu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

XML içinde tekrarlayan veriyi okuma sorunu

Mesaj gönderen vkamadan »

Merhaba ,
Okumam gereken bir XML var ancak bence hatalı oluşturulmuş şöyleki,

Kod: Tümünü seç

 <ODEMESATIRI>
         <SiraNo>0</SiraNo>
         <OdemeTarihi>02-04-2007</OdemeTarihi>
         <TaksitTutari>555,5300</TaksitTutari>
         <SiraNo>1</SiraNo>
         <OdemeTarihi>02-05-2007</OdemeTarihi>
         <TaksitTutari>206,0000</TaksitTutari>
         <SiraNo>2</SiraNo>
         <OdemeTarihi>02-06-2007</OdemeTarihi>
         <TaksitTutari>206,0000</TaksitTutari>
         <SiraNo>3</SiraNo>
         <OdemeTarihi>02-07-2007</OdemeTarihi>
         <TaksitTutari>206,0000</TaksitTutari>
         <SiraNo>4</SiraNo>
         <OdemeTarihi>02-08-2007</OdemeTarihi>
         <TaksitTutari>206,0000</TaksitTutari>
       </ODEMESATIRI>
Şeklinde geliyor, desene müdehale şansım yok ,
bence şöyle gelmeliydi ,

Kod: Tümünü seç


<ODEMESATIRI>
         <ODEME>
          <SiraNo>0</SiraNo>
          <OdemeTarihi>02-04-2007</OdemeTarihi>
          <TaksitTutari>555,5300</TaksitTutari>
         </ODEME>
       <ODEME>
          <SiraNo>1</SiraNo>
          <OdemeTarihi>02-05-2007</OdemeTarihi>
          <TaksitTutari>206,0000</TaksitTutari>
         </ODEME>
       <ODEME>
          <SiraNo>2</SiraNo>
          <OdemeTarihi>02-06-2007</OdemeTarihi>
          <TaksitTutari>206,0000</TaksitTutari>
         </ODEME>
       <ODEME>
          <SiraNo>3</SiraNo>
          <OdemeTarihi>02-07-2007</OdemeTarihi>
          <TaksitTutari>206,0000</TaksitTutari>
         </ODEME>
       <ODEME>
          <SiraNo>4</SiraNo>
          <OdemeTarihi>02-08-2007</OdemeTarihi>
          <TaksitTutari>206,0000</TaksitTutari>
         </ODEME>
       </ODEMESATIRI>

Bana gelen hatalı yapıyı nasıl okuyabilirim, Delphi XML Data Binding arabirimi çok ilginç oluşturuyor nodecollenction şeklinde değil tek bir node olarak görüyor haklı olarak.
Volkan KAMADAN
www.polisoft.com.tr
t-hex
Kıdemli Üye
Mesajlar: 531
Kayıt: 18 Mar 2005 02:45
Konum: İstanbul/Antalya
İletişim:

Mesaj gönderen t-hex »

XML Dosyasını okumadan önce string replace yap.

XML dosyasındaki;

"<sirano>" ifadesini "<odeme><sirano>" olarak,
"</TaksitTutari>" ifadesini de "</TaksitTutari></odeme>" olarak değiştirt.

Böylece daha sağlıklı bir yapı elde edip delphi xml bindingden de faydalanabilirsin.
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

@t-hex, çok iyi bir fikir,
fakat dosya devasal büyüklükte,
hızlı replace fonksiyonlarında yararlanarak çözeriz ozaman.
Çok teşekkürler.
İyi çalışmalar.
Volkan KAMADAN
www.polisoft.com.tr
t-hex
Kıdemli Üye
Mesajlar: 531
Kayıt: 18 Mar 2005 02:45
Konum: İstanbul/Antalya
İletişim:

Mesaj gönderen t-hex »

@vkamadan,

Dosya devasal büyüklükteyse o zaman xml bindingde bellek sorunu yaşanabilir.

Alternatif olarak; dosya yapısı karmaşık olmadığı için basit bir XMLParser kullanıp kendin parse ettirebilirsin, hem hızlı hem de ekonomik olur.

http://www.destructor.de/xmlparser/index.htm

Bu parser'ı kullanabilirsin. Gayet hızlı ve kullanımı da kolay.

Kolay gelsin.
mucip
Üye
Mesajlar: 1
Kayıt: 03 Nis 2007 09:31

Mesaj gönderen mucip »

Selamlar,
Bahsettiğiniz kompenentin Merkez bankası kurlarını veren today.xml dosyası üzerinde işlem yapabilen bir örnek mevcut mu?

Teşekkürler,
Mucip:)
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

@t-hex , teşekkürler,
inceleyeceğim hemen.
İyi çalışmalar.
Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
undefined
Moderator
Mesajlar: 565
Kayıt: 06 Eki 2003 12:01
Konum: Bursa
İletişim:

Mesaj gönderen undefined »

Eğer ayrı bir kütüphane kullanmak istemiyorsan, windows'ta bulunan MSXML'i kullanabilirsin. Veriyi sorgulama ihtiyacın varsa tek tek dalları dolaşmaktansa XPath kullanmanıda tavsiye ederim.
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

İlgilenen tüm arkadaşlara teşekkürler,
her iki yöntemide deneyip en zahmetsiz ve güvenli olanı tercih edeceğim.
İyi çalışmalar.
Volkan KAMADAN
www.polisoft.com.tr
Cevapla