lostyazilim

PHP’de XML & RSS Okuma

6 Mesajlar 5.320 Okunma
lstbozum
wmaraci reklam

Metin Metin metinli.com Kullanıcı
  • Üyelik 28.03.2011
  • Yaş/Cinsiyet 30 / E
  • Meslek SEO Analisti ve Siber Güvenlik
  • Konum Ankara
  • Ad Soyad M** Y**
  • Mesajlar 1399
  • Beğeniler 61 / 582
  • Ticaret 18, (%94)

PHP ile bir sistem geliştirirken kimi zaman RSS & XML ile veri okumanız gerekebilir. Özellikle e-ticaret veya içerik yönetim sistemi gibi bir yapı kodluyorsanız XML üzerinden veri entegrasyonu gibi seçenekleri eklemeniz gerekecektir. Bu gibi örnekler için file_get_contents, cURL read veya dosya okuma işlemleri yerine daha profesyonel fonksiyon ve yapılar kullanabilirsiniz. Basit bir işlem için curl çalıştırmak yerine PHP içerisinde bulunan simplexml_load_file fonksiyonu işinizi çözecektir. Belirtmek istediğim bir nokta var ki o da belirttiğim diğer şekillerde de verilerin okunabileceği. File_get_contents ile veri çekmek için aynı sunucunuzdaki dosyaları kapsayacak farklı ayarlar yapmanız gerekebilir. Her zaman uzak sunucudaki bir XML verisini çekmeyebilirsiniz. Bu nedenle daha çok sunucunuzu yoracak ve sayfa yüklenmesiyle load işlemini artıracak şeylerden kaçınarak daha basite indirgenmiş hazır fonksiyonları kullanabilirsiniz. Basit şekildeki entegrasyon işlemleriniz için simplexml_load_file fonksiyonunu inceleyelim. (Bu fonksiyonu simplexml_load_string şeklinde, sayfa üzerinde bir değişkene atanmış olan veriler için de kullanmanız mümkün. Aynı şekilde XML yapısına sadık kalan veritabanında depolanmış bilgileri de bu şekilde çekebilirsiniz.)

Gelelim bu standart sınıfın kullanışına;

İlk olarak XML sayfasına erişmemiz gerekiyor, ben simplexml_load_string sınıfını kullanarak buna erişim için örnek bir değişken verisi hazırladım;

$veri ='






';


simplexml_load_file ve simplexml_load_string arasındaki ana büyük fark, birisinde dosyaların aynı sayfada bulunmayan bir kaynaktan çekilmesidir. Haliyle bu da diğer yönteme göre milisaniye boyutunda da olsa zaman kaybı şeklinde değerlendirilebilir. Verilerin daha sıkışık ve rahat saklanabilir şekilde bir değişkene atandığını düşünüyorum. PHP sayfama $veri şeklinde bir değişken oluşturdum ve içerisinde XML yapımı girdim. Bu yapım hiyerarşik olarak depolandığı için okunmasında da hazır bir sınıf kullanabiliriz. XML yapısı (ee haliyle RSS yapısı) belirli bir hiyerarşiye göre oluşturulduğu için okunma noktasında da bu bize kolaylık sağlayacaktır.

Verilerime ulaşabilmek için;

  • Ürünler -> Ürün bilgileri -> Ürün adı



şeklinde bir yapıyı izlemem gerekiyor. Daha fazla veri ve değer oluşturabildiği gibi, varsayılan olarak herhangi bir kısıtlamamız yoktur. Ben örnek teşkil etmesi için bir tane değer atamayı uygun gördüm. Gelelim oluşturulmuş olan verimizi PHP ile okumaya;

$xml=simplexml_load_string($veri);

echo $xml->urunler->urunbilgileri->urunadi;


İlk adımda fonksiyonumuzu bir değerle birlikte çalıştırıyoruz. simplexml_load_string fonksiyonu içerisinde $veri değişkenini göndererek dönen sonucu $xml değişkenine atıyorum. Burada dönen sonucu bir dizi olarak veya standart bir sınıf olarak çekmem mümkün. XML fonksiyonları PHP içerisinde sınıflandırılarak depolandığı için varsayılan class yapısıyla bu verilere ikinci satırdaki gibi ulaşabilirim. İkinci satırda da ulaştığım verileri ekrana basıyorum. Hiyerarşik yapıyı takip ederek ürün adına ulaşıyorum. Bu değer return edilmiş olan ve varsayılan olarak string olarak karşımıza çıkan bir değerdir. Bu nedenle kullanımı esnasında ham olarak işlenebilir. (Bu da demek oluyor ki sayısal işlem yapmamız gerektiğinde çekilen verilerin -artık hangi sınıfta bulunuyorsa- integer gibi bir grupta belirtilmesi gerekebilir.)

Yüklenen değeri bir dosyadan çektiğimizde ise ilk olarak bu adresten çekilen veriyi bir değere atayıp string fonksiyonu ile çalışabiliriz. İkinci yolumuz ise okunan verileri (string fonksiyonuna atamadan) direkt olarak okuyabiliriz. Sizin sisteminizde hangisi kullanılması gerekiyorsa, ihtiyaçlarınızı değerlendirerek uygun olanı kullanabilirsiniz.

Herkese hayırlı günler, hayırlı Ramazanlar diliyorum.



Kaynak: PHP’de XML & RSS Okuma | Lokuf.com
bd Psycho aerdogan

kişi bu mesajı beğendi.

Yazar, yazılım geliştirici, SEO Analisti ve siber güvenlik uzmanı.
wmaraci
reklam

saintx saintx .... Kullanıcı
  • Üyelik 19.07.2012
  • Yaş/Cinsiyet 44 / E
  • Meslek ...
  • Konum Diğer
  • Ad Soyad .** .**
  • Mesajlar 148
  • Beğeniler 1 / 40
  • Ticaret 2, (%100)
RSS için problem yaşamadan uzun uzadıya fonksiyonlarla uğraşmak istemeyenler bu konumu inceleyebilirler.
-> http://wmaraci.com/forum/php/simplepie-nedir-simplepie-nasil-kullanilir-85478.html
 

 

Metin Metin metinli.com Kullanıcı
  • Üyelik 28.03.2011
  • Yaş/Cinsiyet 30 / E
  • Meslek SEO Analisti ve Siber Güvenlik
  • Konum Ankara
  • Ad Soyad M** Y**
  • Mesajlar 1399
  • Beğeniler 61 / 582
  • Ticaret 18, (%94)

saintx adlı üyeden alıntı

RSS için problem yaşamadan uzun uzadıya fonksiyonlarla uğraşmak istemeyenler bu konumu inceleyebilirler.
-> http://wmaraci.com/forum/php/simplepie-nedir-simplepie-nasil-kullanilir-85478.html


Uzun uzadıya? :)

Zaten XML yapısına göre bu kodlar standarttır. RSS'e de çevrilebilir.

Birden fazla farklı yapıya sahip olan RSS adreslerinden veri çekmek için sizin örnek gösterdiğiniz 1.3 MB zip boyutunda olan kütüphaneden daha az ihtiyaç gerektiren şeyler de kullanılabilir. Paylaşımınız için emeğinize sağlık ama benim takıldığım nokta "uzun uzadıya fonksiyonlarla uğraşmak istemeyenler" kısmı. Yukarıdaki fonksiyon zaten default bir PHP fonksiyonu hatta PHP sınıfı. Sizin örnek gösterdiğiniz sistem ile yukarıdaki satır sayısını bir değerlendirin isterim. :)
 

 

Yazar, yazılım geliştirici, SEO Analisti ve siber güvenlik uzmanı.

saintx saintx .... Kullanıcı
  • Üyelik 19.07.2012
  • Yaş/Cinsiyet 44 / E
  • Meslek ...
  • Konum Diğer
  • Ad Soyad .** .**
  • Mesajlar 148
  • Beğeniler 1 / 40
  • Ticaret 2, (%100)

Metin adlı üyeden alıntı

Uzun uzadıya? :)

Zaten XML yapısına göre bu kodlar standarttır. RSS'e de çevrilebilir.

Birden fazla farklı yapıya sahip olan RSS adreslerinden veri çekmek için sizin örnek gösterdiğiniz 1.3 MB zip boyutunda olan kütüphaneden daha az ihtiyaç gerektiren şeyler de kullanılabilir. Paylaşımınız için emeğinize sağlık ama benim takıldığım nokta "uzun uzadıya fonksiyonlarla uğraşmak istemeyenler" kısmı. Yukarıdaki fonksiyon zaten default bir PHP fonksiyonu hatta PHP sınıfı. Sizin örnek gösterdiğiniz sistem ile yukarıdaki satır sayısını bir değerlendirin isterim. :)


rss okuma classı yazıp verebilir misiniz rica edersem? salt kodlar ile medya öğelerini vb. tüm öğeleri sorunsuz alabilecek şekilde?
 

 

wmaraci
wmaraci

Metin Metin metinli.com Kullanıcı
  • Üyelik 28.03.2011
  • Yaş/Cinsiyet 30 / E
  • Meslek SEO Analisti ve Siber Güvenlik
  • Konum Ankara
  • Ad Soyad M** Y**
  • Mesajlar 1399
  • Beğeniler 61 / 582
  • Ticaret 18, (%94)

saintx adlı üyeden alıntı

rss okuma classı yazıp verebilir misiniz rica edersem? salt kodlar ile medya öğelerini vb. tüm öğeleri sorunsuz alabilecek şekilde?


Benim gösterdiğim temel bir XML dersi, tutup bunu bilmeyen birisine fonksiyonların havada uçuştuğu bir RSS class yapısını göstermek ne derece doğrudur? :)

Demek istediğim şey şu, insanlara temeli gösterdim. Basit bir XML olayı için de sizin gösterdiğiniz framework gibi bir kütüphane kullanmaya gerek yok. :)
 

 

Yazar, yazılım geliştirici, SEO Analisti ve siber güvenlik uzmanı.

saintx saintx .... Kullanıcı
  • Üyelik 19.07.2012
  • Yaş/Cinsiyet 44 / E
  • Meslek ...
  • Konum Diğer
  • Ad Soyad .** .**
  • Mesajlar 148
  • Beğeniler 1 / 40
  • Ticaret 2, (%100)

Metin adlı üyeden alıntı

Benim gösterdiğim temel bir XML dersi, tutup bunu bilmeyen birisine fonksiyonların havada uçuştuğu bir RSS class yapısını göstermek ne derece doğrudur? :)

Demek istediğim şey şu, insanlara temeli gösterdim. Basit bir XML olayı için de sizin gösterdiğiniz framework gibi bir kütüphane kullanmaya gerek yok. :)


bunu başta söyleseniz ben uzatmazdım :) ben opsiyonel olanı konuya bilgi niyetine koydum ama siz başka yere çektiniz neyse tartışmaya gerek yok :rolleyes:
 

 

wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al