ASP ile XML den veri almak - XML Webmaster bilgi bankası, knowledge base Webmaster Araçları

AnaSayfa > XML > ASP ile XML den veri almak
Kategori: XML
Gönderen: Admin
Tarih: 2008-12-07
Puan: 7   Puan:7 | Katılımcı:5 | Katılımcı : 5
Okunma: 6563
  
 
1 puan 2 puan 3 puan 4 puan 5 puan 6 puan 7 puan 8 puan 9 puan 10 puan

Bu yazımızda ASP ile XML dosyalarından nasıl veri alırız bunu işleyeceğiz. XML nedir ne değildir, yapısı nasıldır, nasıl yazılır tüm bunlar için internette yüzlerce örnek bulabilirsiniz. Gerekli bilgiyi buralardan bulabilirsiniz. XML ortak veri değişim standardıdır denir ama bu değişim nasıl yapılır bu konuda bilgi bulmak neredeyse imkansızdır.

Bizde bu yazımızda ASP ile bir XML dosyasından nasıl veri alırız bunu işleyeceğiz.

Öncelikle elimizde içinden veri alacağımız bir XML dosyası olmalı. Yani elimizde olmalı derken içinden veri almayı düşündüğümüz bir XML dosyası var olmalı. Biz bu yazımızda progen firmasının ücretsiz olarak sunduğu hava durumu bilgisi alıp bunu sayfamıza yazdıracağız. Bunun için kullanacağımız adres http://xml.progen.com.tr/havadurumu.php?s=giresun adresi. Bu adresi tarayıcınızda görüntülerseniz aşağıdaki gibi bir yapısı olduğunu görebilirsiniz.

<?xml version="1.0" encoding="ISO-8859-9" ?>
- <PROGEN>
- <havadurumu>
<sehir_adi>Giresun</sehir_adi>
<son_guncelleme>2005-02-22 00:02:59</son_guncelleme>
<tarih>2005-02-22 23:00:00</tarih>
<durum>Az Bulutlu</durum>
<sicaklik>7</sicaklik>
<ruzgar>Güneyden Hafif</ruzgar>
<nem>0</nem>
<gorus>20 km</gorus>
<ruzgar_etkisi />
<nem_etkisi />
</havadurumu>
</PROGEN>
Biz bu sayfaya bağlanıp buradan sitemizde göstermek istediğimiz tarih,durum, sicaklik, nem bilgilerini alacağız.

Öncelikle aşağıdaki gibi bu XML dosyasına MSXML.DOMDocument objesi ile ServerHTTPRequest isteğinde bulunup XML dosyasını yüklüyoruz.

<%
set xmlDoc = CreateObject("MSXML.DOMDocument")
xmlDoc.async = false
xmlDoc.setProperty "ServerHTTPRequest", true
xmlDoc.load("http://xml.progen.com.tr/havadurumu.php?s=giresun")
%>

Eğer bu işlem sırasında hata oluşmuşsa bunu görüntüleyelim.

<%
If (xmlDoc.parseError.errorCode <> 0) then
Response.Write "XML Hatası: " & xmlDoc.parseError.reason
Else
´Veri alma işlemleri
end If
%>

Eğer dosyayı kazasız belasız almış isek bunu içinden <havadurumu> ismindeki kanal içindeki alt başlıklardaki(tag) verileri alalım.

<%
set channelNodes = xmlDoc.selectNodes("//havadurumu/*")

for each entry in channelNodes
if entry.tagName = "tarih" then
strTarih = entry.text
elseif entry.tagName = "durum" then
strDurum = entry.text
elseif entry.tagName = "sicaklik" then
strSicaklik = entry.text
elseif entry.tagName = "nem" then
strNem = entry.text
end if
next

Response.Write "Tarih: " & strTarih & "<br />"
Response.Write "Durum: " & strDurum & "<br />"
Response.Write "Sıcaklık: " & strSicaklik &"<br />"
Response.Write "Nem: " & strNem &"<br />"
%>

Evet işlem bu kadar basit. set channelNodes = xmlDoc.selectNodes("//havadurumu/*") diyerek içinden veri alacağınız kanalın adını yazıp sonrada bu kanal içindeki alt tagları kontrol ederek eğer sizin istediğiniz tag ise içindeki değeri alıyorsunuz.

Kodumuzun en son hali şöyle:

URL = "http://xml.progen.com.tr/havadurumu.php?s=giresun"

set xmlDoc = createObject("MSXML.DOMDocument")
xmlDoc.async = false
xmlDoc.setProperty "ServerHTTPRequest", true
xmlDoc.load(URL)

If (xmlDoc.parseError.errorCode <> 0) then
Response.Write "XML Hatası: " & xmlDoc.parseError.reason
Else

set channelNodes = xmlDoc.selectNodes("//havadurumu/*")

for each entry in channelNodes
if entry.tagName = "tarih" then
strTarih = entry.text
elseif entry.tagName = "durum" then
strDurum = entry.text
elseif entry.tagName = "sicaklik" then
strSicaklik = entry.text
elseif entry.tagName = "nem" then
strNem = entry.text
end if
next

Response.Write "Giresunda Hava<br />"
Response.Write "Tarih: " & strTarih & "<br />"
Response.Write "Durum: " & strDurum & "<br />"
Response.Write "Sıcaklık: " & strSicaklik &"<br />"
Response.Write "Nem: " & strNem &"<br />"

end If
%>





Yorumlar
Henüz Kimse Yorum Yapmamış, ilk yorumu siz ekleyin!
Yorum Ekleme Aparatı
Yorum Eklemek için lütfen sol menuden giris yapınız..
Toplam 0 yorum listelendi.