• 18-01-2015, 19:10:54
    #1
    Php de ürün aktarımı için XML olayını çözmeye çalışıyorum. Daha çok yeniyim.
    Bir iki örnek inceledim. İncelediğim örneklerde genelde xml şablonu manuel include dosyasında tanımlanıyor aktarımlar bu şablona göre yapılıyor. Örneklerin birinde iş abartılmış. XML aktarımı için panel yazılmış. Panelin sol tarafında aktarım yapılabilecek alanlar var. Diğer tarafta ise browse deyip XML dosyasını seçiyorsunuz ve XMLdeki node'ları otomatik listeliyor. Sürükle bırak mantığıyla alanları eşleştiriyorsunuz. Malum bu sadece demoydu source kodlar olmadığına yapmak başa düştü. Ama bir türlü XML dosyası içindeki node'ları listelemeyi başaramadım. XML desenin sabit olamadığını düşünürsek bunu nasıl yaparız?

    Şimdiden teşekkürler.
  • 18-01-2015, 19:55:59
    #2
    Ben böyle birşey yapsam şayet xml ile hiç uğraşmazdım sanırım, bir fikir vermem gerekirse XML' dosyasını Json olarak convert et, ve işlemlerini Json olarak yap..Ayrıca çalıştığın XML dosyasını burayada yazarsan daha detaylı bir inceleme yapabiliriz / im.

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 19:55:59 -->-> Daha önceki mesaj 19:47:43 --

    XML ile yapmak istersen şöyle bir örnek verebilirim.

    <?php
    
    class xmlToDB
    {
        function getUrun()
        {
        $baslangicetiketi   = 'urun';
        $urun_kodu          = 'ID';
        $urun_adi           = 'Adi';
        $kategori_kodu      = 'KategoriID';
        $kategori_adi       = 'KategoriAdi';
        $urun_fiyati        = 'Fiyat';
        $parabirimi         = 'kur';
        $urun_stogu         = 'Stok';
        $urun_aciklamasi    = 'Aciklama';
        $urun_resmi         = 'Resim';
        
    	$xmlData = simplexml_load_file("urunler.xml");
        foreach($xmlData->{$baslangicetiketi} as $product)
        {
            $kategoriler[] = array('code' => $product->{$kategori_kodu},
                                     'cname' => $product->{$kategori_adi},
                                     'parentcode' => '');
        
            $urunler[]  = array('pcode' => $product->{$urun_kodu},
                                    'pname' => $product->{$urun_adi},
                                    'price1' => $product->{$urun_fiyati},
                                    'currency' => $product->{$parabirimi},
                                    'tax' => 'KDV DAHIL',
                                    'stock' => $product->{$urun_stogu},
                                    'catid' => $product->{$kategori_kodu},
                                    'brand' => 'Oscommerce.TC',
                                    'desc' => $product->{$urun_aciklamasi});
    
            $resimler = array(  'pid' => $pid,
                                            'image'=>$product->{$urun_resmi},
                                            'thumb'=>'',
                                            'number' =>0
                                            );
        } 
        } 
    } 
    ?>
  • 18-01-2015, 20:06:37
    #3
    Öncelikle ilgin için teşekkürler;

    Belli bir XML dosyası yok. Amaç senin verdiğin örnekteki

    $baslangicetiketi = 'urun';
    $urun_kodu = 'ID';
    $urun_adi = 'Adi';
    $kategori_kodu = 'KategoriID';
    $kategori_adi = 'KategoriAdi';
    $urun_fiyati = 'Fiyat';
    $parabirimi = 'kur';
    $urun_stogu = 'Stok';
    $urun_aciklamasi = 'Aciklama';
    $urun_resmi = 'Resim';

    tanımlamasını ara birimde eşleştirme yöntemiyle oluşturabilmek. Bunun için XML nin desenini bulmak gerek. Onu nasıl yaparız diye çırpınıyorum.
  • 18-01-2015, 20:15:09
    #4
    Önek bir xml dosyası yok mu, onun üzerinden devam edelim.
  • 18-01-2015, 20:19:03
    #5
    Ceu adlı üyeden alıntı: mesajı görüntüle
    Önek bir xml dosyası yok mu, onun üzerinden devam edelim.
    Diyelim ki bu

    <?xml version="1.0" encoding="utf-8"?>
    <INDEXGRUP>
      <KATEGORI KOD="IDX1012" TANIM="Güvenlik">
        <GRUP KOD="1250" TANIM="CCTV Kamera">
          <URUN KOD="IC-202W-G1" AD="GKB IP CAMERA - IC SERIES(yellow)" MARKA="GKB" GLOBALKOD="IC-202W-G1" SIRKETKOD="IDX">
            <VERGI>KDV18</VERGI>
            <RESIM>http://www.indexpazar.com/all_images/IC-202W-G1.jpg</RESIM>
            <OZELLIK>
              <OZL TANIM="Network Arabirimi" DEGER="Ethernet 10BaseT/100BaseTX" />
              <OZL TANIM="Görüntü Algılayıcı" DEGER="RGB/VGA 1/5&quot; CMOS" />
              <OZL TANIM="Işık Hassasiyeti" DEGER="1 Lux" />
              <OZL TANIM="Lens" DEGER="3,2 mm Sabit" />
              <OZL TANIM="Görüntü Sıkıştırma" DEGER="MPEG-4" />
              <OZL TANIM="Çözünürlük" DEGER="Maksimum 640 x 480" />
              <OZL TANIM="Görüntü Hızı" DEGER="25 fps /PAL,30 fps /NTSC" />
              <OZL TANIM="Bant Genişliği" DEGER="64 K - 2M Bits/Sec" />
              <OZL TANIM="Ses" DEGER="Dahili Mikrofon" />
              <OZL TANIM="Güvenlik" DEGER="Şifre Korumalı" />
              <OZL TANIM="Yönetim Yazılımı" DEGER="Ücretsiz" />
              <OZL TANIM="Kayıt Yazılımı" DEGER="Ücretsiz" />
              <OZL TANIM="İşletim Sistemi" DEGER="Windows XP ve Üzeri" />
              <OZL TANIM="Güç Kaynağı" DEGER="DC 5 V, 1 A" />
              <OZL TANIM="Hareket Algılama" DEGER="Var" />
              <OZL TANIM="e-mail Uyarı" DEGER="Var" />
              <OZL TANIM="Ölçüler" DEGER="125mm x 75mm x 35mm" />
              <OZL TANIM="Ağırlık" DEGER="260 Gr" />
              <OZL TANIM="Garanti Süresi" DEGER="2 Yıl" />
              <OZL TANIM="Kullanıcı Sayısı Unicast" DEGER="4 (Aynı Anda)" />
              <OZL TANIM="Kullanıcı SayısıMulticast" DEGER="Sınırsız" />
              <OZL TANIM="DHCP Desteği" DEGER="Var" />
              <OZL TANIM="Operating Temperature" DEGER="-10 ° C ~ +60 ° C" />
            </OZELLIK>
          </URUN>
          <URUN KOD="IC-202W-G2" AD="GKB IP CAMERA - IC SERIES (black)" MARKA="GKB" GLOBALKOD="IC-202W-G2" SIRKETKOD="IDX">
            <VERGI>KDV18</VERGI>
            <RESIM>http://www.indexpazar.com/all_images/IC-202W-G2.jpg</RESIM>
            <OZELLIK>
              <OZL TANIM="Network Arabirimi" DEGER="Ethernet 10BaseT/100BaseTX" />
              <OZL TANIM="Görüntü Algılayıcı" DEGER="RGB/VGA 1/5&quot; CMOS" />
              <OZL TANIM="Işık Hassasiyeti" DEGER="1 Lux" />
              <OZL TANIM="Lens" DEGER="3,2 mm Sabit" />
              <OZL TANIM="Görüntü Sıkıştırma" DEGER="MPEG-4" />
              <OZL TANIM="Çözünürlük" DEGER="Maksimum 640 x 480" />
              <OZL TANIM="Görüntü Hızı" DEGER="25 fps /PAL,30 fps /NTSC" />
              <OZL TANIM="Bant Genişliği" DEGER="64 K - 2M Bits/Sec" />
              <OZL TANIM="Ses" DEGER="Dahili Mikrofon" />
              <OZL TANIM="Güvenlik" DEGER="Şifre Korumalı" />
              <OZL TANIM="Yönetim Yazılımı" DEGER="Ücretsiz" />
              <OZL TANIM="Kayıt Yazılımı" DEGER="Ücretsiz" />
              <OZL TANIM="İşletim Sistemi" DEGER="Windows XP ve Üzeri" />
              <OZL TANIM="Güç Kaynağı" DEGER="DC 5 V, 1 A" />
              <OZL TANIM="Hareket Algılama" DEGER="Var" />
              <OZL TANIM="e-mail Uyarı" DEGER="Var" />
              <OZL TANIM="Çalışma Sıcaklığı" DEGER="-10ºC - +60ºC" />
              <OZL TANIM="Ölçüler" DEGER="125mm x 75mm x 35mm" />
              <OZL TANIM="Ağırlık" DEGER="260 Gr" />
              <OZL TANIM="Garanti Süresi" DEGER="2 Yıl" />
              <OZL TANIM="Kullanıcı Sayısı Unicast" DEGER="4 (Aynı Anda)" />
              <OZL TANIM="Kullanıcı SayısıMulticast" DEGER="Sınırsız" />
              <OZL TANIM="DHCP Desteği" DEGER="Var" />
            </OZELLIK>
          </URUN>
        </GRUP>
      </KATEGORI>
  • 18-01-2015, 21:05:47
    #6
    Size fikir vermek amacı ile bir kod yazdım, kolay gelsin.
    <?php
    
        function toJson ($xml_url) {
            $xml     = file_get_contents($xml_url);
            $xml     = str_replace(array("\n", "\r", "\t"), '', $xml);
            $xml     = trim(str_replace('"', "'", $xml));
            $xml_cek = simplexml_load_string($xml);
            $json    = json_encode($xml_cek);
            return $json;
        }
    	
    	$urunler = json_decode(toJson("http://tweettac.com/tumblr/urunler.xml"), true);
    	
    	// 1. urunu ekrana basalım.
    	print_r($urunler['KATEGORI']['GRUP']['URUN'][0]);
    	
    	// 2. urunu ekrana basalım.
    	print_r($urunler['KATEGORI']['GRUP']['URUN'][1]);
    	
    	
    
    ?>
  • 18-01-2015, 21:18:23
    #7
    Eline sağlık. Teşekkürler;

    Ceu adlı üyeden alıntı: mesajı görüntüle
    Önek bir xml dosyası yok mu, onun üzerinden devam edelim.
    Ceu adlı üyeden alıntı: mesajı görüntüle
    Size fikir vermek amacı ile bir kod yazdım, kolay gelsin.
    <?php
    
        function toJson ($xml_url) {
            $xml     = file_get_contents($xml_url);
            $xml     = str_replace(array("\n", "\r", "\t"), '', $xml);
            $xml     = trim(str_replace('"', "'", $xml));
            $xml_cek = simplexml_load_string($xml);
            $json    = json_encode($xml_cek);
            return $json;
        }
    	
    	$urunler = json_decode(toJson("http://tweettac.com/tumblr/urunler.xml"), true);
    	
    	// 1. urunu ekrana basalım.
    	print_r($urunler['KATEGORI']['GRUP']['URUN'][0]);
    	
    	// 2. urunu ekrana basalım.
    	print_r($urunler['KATEGORI']['GRUP']['URUN'][1]);
    	
    	
    
    ?>