| 
 | 
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     | Katılımcı : 5 |  | Okunma | : 7342 |  |   |   |  |   |  
 |    |   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.  |  
   |