Zoque.Forum
Dirsek Teması:
Geri Dön Zoque.Forum » Webmaster Kaynaklari » ://www » Script Bölümü » PHP 4 ve XML


Script Bölümü Kendi yazmış olduğunuz dhtml, java script uygulamalara ya da sunucu tabanlı çalışan programlara bu bölümde yer verebilirsiniz.

Yanıt
 
LinkBack Seçenekler
Old 26.08.2004   #1 (permalink)
Painkiller
 
Painkiller's Avatar
 
Üyelik Tarihi: 27.11.2003
Yer: izmir
Yaş: 25
Mesaj: 20
PHP 4 ve XML

Merhaba arkadaşlar,
Evet sorun PHP ve XML. Şimdi PHP 5 de olay oldukça rahat. Zira .NET benzeri API ler ile olay oldukça basitleştirilmiş. Ama gel gelelim PHP 4 e burda işler biraz karışık. Ve zahmetli. Ben internette incelediğim diğer class ve fonksiyonları değerlendirip kendimce bir class yazdım. Evet güzel hızlı ve hoş çalışıyor. Fakat bu seferde Türkçe karakter sorunu oluştu. Konuya hâkim arkadaşlar bir incelerlerse çok sevinirim.

PHP Code:
<?PHP
class XMLGet 

    var 
$GetByTagName$GetByTagAttr = array(), $XMLDocument;
    var 
$Record = array(), $XMLParser;
    var 
$ErrMSG$LineNumber$Getname;

    function 
XMLGet() {
        
$arrClassVars get_class_vars(get_class($this));
        
$blnReturn false;
        
$strParserVarName "XMLParser";

        if(
$arrClassVars[$strParserVarName] != "") {
            
$blnReturn true;
            } else {
            
$this->XMLParser xml_parser_create();
            
xml_set_object($this->XMLParser, &$this);
            
xml_set_element_handler($this->XMLParser"startElement""endElement");
            
xml_set_character_data_handler($this->XMLParser"characterData");
            
$blnReturn true;
            }
        
xml_parser_set_option($this->XMLParserXML_OPTION_CASE_FOLDINGtrue); 
        
xml_parser_set_option($this->XMLParser,XML_OPTION_TARGET_ENCODING,"utf-8");
    }

    function 
CWS_XMLGet($XMLDoc$TagName$Attrb=false) {
        if (!
$XMLDoc) {
            
$this->ErrorMSG("Kaynak XML dokümani belirtilmemis");
            return 
false;
            exit;
            }
        if (!
$TagName) {
            
$this->ErrorMSG("Etiket belirtilmemis");
            return 
false;
            exit;
            }
        
$this->XMLDocument        trim($XMLDoc);
        
$this->GetByTagName        explode(',',trim(strtoupper($TagName)));
        
$this->GetByTagAttr        explode(',',trim(strtoupper($Attrb)));
        
$this->Record            = array();
        
$this->ParsingXML();
    }

    function 
startElement($XMLParser$name$attrs) { 
        
$this->Getname $name;
        
$this->LineNumber count($this->Record);
        if (
sizeof($attrs)) {
            foreach (
$attrs as $Attkey => $Attval) { 
                if (
in_array($Attkey,$this->GetByTagAttr) && in_array($this->Getname,$this->GetByTagName)) {
                    
$this->Record[$this->LineNumber][$name][$Attkey] = $attrs[$Attkey];
                    }
                }
            }
    }

    function 
endElement($XMLParser$name) {
    }

    function 
characterData($XMLParser$data) { 
        if (
in_array($this->Getname,$this->GetByTagName) && !$this->Record[$this->LineNumber][$this->Getname]['--DATA--']) {
            
$this->Record[$this->LineNumber][$this->Getname]['--DATA--'] = $data;
            }
    }

    function 
ParsingXML() {
        
$fp = @fopen($this->XMLDocument"rb") or $this->ErrorMSG("XML dokümanı ile bağlantı kurulamadı <STRONG>Satir: 1</STRONG>");
        while (
$data fread($fp4096)) { 
            if (!
xml_parse($this->XMLParser$datafeof($fp))) { 
                
$this->ErrorMSG(sprintf("%s <STRONG>Satir: %d</STRONG>",
                
xml_error_string(xml_get_error_code($this->XMLParser)), 
                
xml_get_current_line_number($this->XMLParser) )); 
                } 
            }
        
xml_parser_free($this->XMLParser);
        
fclose($fp);
    }

    function 
CloseXML() {
        unset(
$this->XMLDocument);
        unset(
$this->GetByTagName);
        unset(
$this->GetByTagAttr);
        unset(
$this->OutPutName);
        unset(
$this->Record);
        unset(
$this->LineNumber);
        unset(
$this->Getname);
    }

    function 
ErrorMSG($err) {
        
$MsgErr.= "<STRONG>XML Hatasi :</STRONG><P>".$err."<P><A HREF=\"JavaScript:history.go(-1);\">&lt; Geri</A>";
        print 
f_PrintMSG(true,$MsgErr,true);
        exit;
    }

}


?>

Class bu şekilde. XML dosyasını okuyup attribute lerle ve taglarla beraber bir array olarak çıktı veriyor.

Örneğin TRT den döviz bilgilerini almak için:

PHP Code:
$MoneyXML "http://www.trt.net.tr/aspx/pararead.aspx?param=doviz";
$XML = new XMLGet;
$XML->CWS_XMLGet($MoneyXML"DO","DA,DS");
$OutPutHTML.= "<TABLE WIDTH=\"165\" BORDER=\"0\" CELLPADDING=\"1\" CELLSPACING=\"1\" CLASS=\"bordered\">\n";
$OutPutHTML.= "<TR> \n";
$OutPutHTML.= "<TD BGCOLOR=\"#EEF8E0\" CLASS=\"smalls\"><STRONG>Döviz</STRONG></TD>\n";
$OutPutHTML.= "</TR>\n";
$OutPutHTML.= "<TR>\n";
$OutPutHTML.= "<TD CLASS=\"smalls\"><IMG SRC=\"gfx/soft_gray.gif\" WIDTH=\"100%\" HEIGHT=\"1\"></TD>\n";
$OutPutHTML.= "</TR>\n";
$OutPutHTML.= "<TR> \n";
$OutPutHTML.= "<TD BGCOLOR=\"#F3F3F3\" CLASS=\"smalls\">USD Dolar ($)</TD>\n";
$OutPutHTML.= "</TR>\n";
$OutPutHTML.= "<TR> \n";
$OutPutHTML.= "<TD CLASS=\"smalls\"><TABLE WIDTH=\"100%\" BORDER=\"0\" CELLPADDING=\"1\" CELLSPACING=\"1\" CLASS=\"smalls\">\n";
$OutPutHTML.= "<TR>\n";
$OutPutHTML.= "<TD WIDTH=\"40\">Alış :</TD>\n";
$OutPutHTML.= "<TD>".$XML2->Record[0]['DO']['DA']."</TD>\n";
$OutPutHTML.= "</TR>\n";
$OutPutHTML.= "<TR>\n";
$OutPutHTML.= "<TD>Satış :</TD>\n";
$OutPutHTML.= "<TD>".$XML2->Record[0]['DO']['DS']."</TD>\n";
$OutPutHTML.= "</TR>\n";
$OutPutHTML.= "</TABLE></TD>\n";
$OutPutHTML.= "</TR>\n";
$OutPutHTML.= "<TR> \n";
$OutPutHTML.= "<TD CLASS=\"smalls\"><IMG SRC=\"gfx/soft_gray.gif\" WIDTH=\"100%\" HEIGHT=\"1\"></TD>\n";
$OutPutHTML.= "</TR>\n";
$OutPutHTML.= "<TR> \n";
$OutPutHTML.= "<TD BGCOLOR=\"#F3F3F3\" CLASS=\"smalls\">EURO (€)</TD>\n";
$OutPutHTML.= "</TR>\n";
$OutPutHTML.= "<TR> \n";
$OutPutHTML.= "<TD CLASS=\"smalls\"><TABLE WIDTH=\"100%\" BORDER=\"0\" CELLPADDING=\"1\" CELLSPACING=\"1\" CLASS=\"smalls\">\n";
$OutPutHTML.= "<TR> \n";
$OutPutHTML.= "<TD WIDTH=\"40\">Alış :</TD>\n";
$OutPutHTML.= "<TD>".$XML2->Record[11]['DO']['DA']."</TD>\n";
$OutPutHTML.= "</TR>\n";
$OutPutHTML.= "<TR> \n";
$OutPutHTML.= "<TD>Satış :</TD>\n";
$OutPutHTML.= "<TD>".$XML2->Record[11]['DO']['DA']."</TD>\n";
$OutPutHTML.= "</TR>\n";
$OutPutHTML.= "</TABLE></TD>\n";
$OutPutHTML.= "</TR>\n";
$OutPutHTML.= "</TABLE><BR>\n";
$XML2->CloseXML();
print 
$OutPutHTML
herkese iyi çalışmalar.
Painkiller şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Yanıt

Etiketler
xml , php



 
Zoque'a hoşgeldiniz!
Zoque 27.02.1999 tarihinde yayın hayatına başlamış, paylaşıma dayalı bir oluşumdur. Tasarım, teknoloji, web, kültür ve sanat ana başlıkları altında bilgi paylaşımı ve benzer değerlere sahip katılımcıların birbirleriyle iletişime girmelerine imkan sağlar. "Az ama Öz" sloganından yola çıkarak, kaliteli ve nitelikli katılımı temel alır.

Saygın ve ciddi bir ortamda yardımlaşmak, haberleşmek, kendi bildiklerini diğer katılımcılarla paylaşmak isteyen, oluşumumuza düzenli katılımda bulunacağı inancını taşıyan konuklarımızı üye olmaya davet ediyoruz. [ » ]


Üye Girişi:

UslanmaM baktabul.com

En popüler ilk 100 etiket
Tag Cloud
acil adsl ajax almak arama araniyor ariyorum ariyoruz asp bilen bilgi bilgisayar blog calisma canon css dijital div domain dosya eleman film firefox flash font form forum fotograf freelance google gore grafik grafiker hakkinda hangi hata hatasi hosting html ilgili ilk image internet istanbul istiyorum java javascript karakter kayit kisisel kullanimi link logo mac mail menu muzik mysql nasil neden nedir online photoshop php problemi program programi reklam resim satilik sayfa script server ses sistemi site sitesi son soru sorun sorunsali sorunu sql swf tasarim tasarimci tasarimcisi tasarimi turk turkce veri video web windows wordpress xml yardim yazi yeni zoque
ADnet Reklamları [ Siz de reklam verin  » ]
Zoque RSS Aboneliği
Son eklenen konuları e-posta ile haber verelim mi?

Forum Yazılımı: vBulletin® Version 3.7.2 Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0 RC5

Arayüz/Skin "Güneş" © www.zoque.com / net. Copyright © 1999 - 2008
Forum Saati GMT +2. Şu anda saat: 08:39.