• 26-12-2009, 23:54:03
    #1
    Üyeliği durduruldu
    Selam arkadaslar, asagida bi xml dosyam var
    array(20) {
      [0]=>
      object(SimpleXMLElement)#2 (5) {
        ["title"]=>
        object(SimpleXMLElement)#22 (0) {
        }
        ["description"]=>
        object(SimpleXMLElement)#23 (0) {
        }
        ["link"]=>
        string(39) "linkimiz"
        ["pubDate"]=>
        string(31) "Tue, 22 Jul 2008 23:26:28 -0700"
        ["enclosure"]=>
        object(SimpleXMLElement)#24 (1) {
          ["@attributes"]=>
          array(3) {
            ["url"]=>
            string(157) "urlmiz"
            ["type"]=>
            string(29) "application/x-shockwave-flash"
            ["length"]=>
            string(4) "1000"
          }
        }
      }
    }
    ve bu sekilde xml'i okuyorum ama enclosure icindeki url attributuna erisemiyorum.
    $res = $xml->xpath("//item");
    foreach($res as $r){
    	echo $r->title."<br />";
    	echo $r->description."<br />";
    	print_r($r->enclosure->xpath(""));
    	echo "<br />------------------------<br />";
    	//var_dump($r);
    }
    yardimci olabilirseniz sevinirim.
  • 27-12-2009, 12:22:22
    #2
    Sade xml i yazar isen, kodunu yazabilirim.Örnek:
    <urun>
    <urunadi anakati="hdd" altkat="sata2">WESTERN DIGITAL CAVIAR BLACK 1 TB 3,5" SATA2 7200RPM 32MB CACHE WDC-WD1001FALS</urunadi>
    <fiyat tipİ="TL">197</fiyat>
    </urun>
  • 27-12-2009, 21:30:53
    #3
    Üyeliği durduruldu
    felix59 adlı üyeden alıntı: mesajı görüntüle
    Sade xml i yazar isen, kodunu yazabilirim.Örnek:
    <urun>
    <urunadi anakati="hdd" altkat="sata2">WESTERN DIGITAL CAVIAR BLACK 1 TB 3,5" SATA2 7200RPM 32MB CACHE WDC-WD1001FALS</urunadi>
    <fiyat tipİ="TL">197</fiyat>
    </urun>
    eyvAllah hocam bu sekilde olsa sorun yok zaten. //urunadi/@anakati seklinde cekerdim. ama verdigim kodda nasil uygulayacagimi bilmiyorum. Aklima gelen bütün yollari denedim.

    Sorun hala cözülmemistir arkadaslar yardiminiz bekliyorum.
  • 27-12-2009, 22:37:43
    #4
    o zaman sadece özelliğe göre seçmiş olursun. Bende hep öyle kullanıyordum. Şimdide loadstringli li öğrenmiş olduk.
    Ben böyle yaptım xml dosyası doğru olmayabilir.Ordaki arraya a göre oluşturdum.
    dosya.xml
    <?xml version="1.0" encoding="windows-1254" ?>
    <veri>
       <item> 
          <title>titlecik</title> 
          <description>tanımcik</description> 
          <link>linkick</link> 
          <enclosure url="url adresi" type="tipi flashmi ne ise iste" length="uzunlugu" />
       </item> 
    </veri>
    Buda php kodumuz:
    <?php 
    
    $xmldosyasi = file_get_contents('dosya.xml'); 
    $ayristir = new SimpleXMLElement($xmldosyasi); 
    $res = $ayristir->xpath("//item"); 
    foreach($res as $r){ 
        echo $r->title."<br />"; 
        echo $r->description."<br />"; 
        echo $r->enclosure->attributes()->url."<br />"; 
        echo $r->enclosure->attributes()->type."<br />"; 
        echo $r->enclosure->attributes()->length."<br />"; 
        echo "<br />------------------------<br />"; 
    } 
    ?>
    Ben şu an bu şekil anladım.eğer başka şekilde ise, onuda elimden geldiğince yapmaya çalışırım.
  • 27-12-2009, 23:04:50
    #5
    Üyeliği durduruldu
    felix59 adlı üyeden alıntı: mesajı görüntüle
    o zaman sadece özelliğe göre seçmiş olursun. Bende hep öyle kullanıyordum. Şimdide loadstringli li öğrenmiş olduk.
    Ben böyle yaptım xml dosyası doğru olmayabilir.Ordaki arraya a göre oluşturdum.
    dosya.xml
    <?xml version="1.0" encoding="windows-1254" ?>
    <veri>
       <item> 
          <title>titlecik</title> 
          <description>tanımcik</description> 
          <link>linkick</link> 
          <enclosure url="url adresi" type="tipi flashmi ne ise iste" length="uzunlugu" />
       </item> 
    </veri>
    Buda php kodumuz:
    <?php 
    
    $xmldosyasi = file_get_contents('dosya.xml'); 
    $ayristir = new SimpleXMLElement($xmldosyasi); 
    $res = $ayristir->xpath("//item"); 
    foreach($res as $r){ 
        echo $r->title."<br />"; 
        echo $r->description."<br />"; 
        echo $r->enclosure->attributes()->url."<br />"; 
        echo $r->enclosure->attributes()->type."<br />"; 
        echo $r->enclosure->attributes()->length."<br />"; 
        echo "<br />------------------------<br />"; 
    } 
    ?>
    Ben şu an bu şekil anladım.eğer başka şekilde ise, onuda elimden geldiğince yapmaya çalışırım.
    tabiki yaaa attributes()->url
    hocam eyvAllah yardimin icin cok tesekkür ederim.
  • 28-12-2009, 09:28:36
    #6
    Üyeliği durduruldu
    birde bu tarz işlemlerde tip dönüşümü (type casting yapmaniz gerekebilir)

    $url = (string)attributes()->url;
    gibi