Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

Farklı bir XML yapısı

Konu, 'PHP' kısmında Bay_Oz tarafından paylaşıldı.

  1. Bay_Oz

    Bay_Oz Üye

    Kayıt:
    5 Nisan 2008
    Mesajlar:
    66
    Beğenilen Mesajlar:
    0
    Meslek:
    E-Ticaret Web Geliştirici
    Şehir:
    izmir
    PHP:
    <?xml version="1.0" encoding="utf-8"?>
    <OZGRUP>
      <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>
      <KATEGORI KOD="IDX1010" TANIM="Yazıcı">
        <GRUP KOD="1128" TANIM="Foto Yazıcı">
          <URUN KOD="CC247B" AD="HP Photosmart D7460 Yazıcı" MARKA="HP" GLOBALKOD="CC247B" SIRKETKOD="IDX">
            <VERGI>KDV18</VERGI>
            <RESIM>http://www.indexpazar.com/all_images/CC247B.jpg</RESIM>
            <OZELLIK>
              <OZL TANIM="Baskı Boyutu" DEGER="A4" />
              <OZL TANIM="Baskı Teknolojisi" DEGER="HP Thermal Mürekkep Püskürtmeli" />
              <OZL TANIM="Kartuj Sayısı" DEGER="6" />
              <OZL TANIM="Siyah Baskı Hızı (PPM)" DEGER="34 ppm" />
              <OZL TANIM="Renkli Baskı Hızı (PPM)" DEGER="33 ppm" />
              <OZL TANIM="Baskı Çözünürlük SB (DPI)" DEGER="1200 dpi x 1200 dpi" />
              <OZL TANIM="Baskı Çözünürlük Renkli (DPI)" DEGER="4800 dpi x 1200 dpi" />
              <OZL TANIM="Baskı Kapasitesi (AYLIK)" DEGER="3000 syf." />
              <OZL TANIM="Bellek (STD/MAX)" DEGER="64 MB" />
              <OZL TANIM="Kağıt Kapasitesi (STD/ MAX)" DEGER="100 syf. / 100 sfy." />
              <OZL TANIM="Çift Taraflı Baskı Özelliği" DEGER="Otomatik (isteğe bağlı)" />
              <OZL TANIM="Cd-Dvd Baskı Özelliği" DEGER="Yok" />
              <OZL TANIM="Yazıcı Dilleri" DEGER="HP PCL 3" />
              <OZL TANIM="Standart Arabirim" DEGER="USB - USB 2.0 özellikleriyle uyumludur, PictBridge, Ethernet, bellek kartı yuvaları, HP bt500 Bluetooth Kablosuz Yazıcı ve PC Adaptoru" />
              <OZL TANIM="Opsiyonel Arabirim" DEGER="Yok" />
              <OZL TANIM="Desteklediği İşletim Sistemleri" DEGER="Windows® 2000 (SP3), Windows® XP Home, Windows® XP Professional, Windows Vista™ İçin Hazır; Mac OS X v10.3.9;Mac OS X v10.4" />
              <OZL TANIM="Garanti (AY)" DEGER="12 Ay Sınırlı Donanım Garantisi" />
              <OZL TANIM="Özel Açıklama" DEGER="8,6 cm ekranlı yenilenen dokunmatik ekran." />
              <OZL TANIM="Web Adresi" DEGER="www.hp.com.tr" />
            </OZELLIK>
          </URUN>
          <URUN KOD="CC975B" AD="HP Photosmart D7260 Printer" MARKA="HP" GLOBALKOD="CC975B" SIRKETKOD="IDX">
            <VERGI>KDV18</VERGI>
            <RESIM>http://www.indexpazar.com/all_images/CC975B.jpg</RESIM>
            <OZELLIK>
              <OZL TANIM="Baskı Boyutu" DEGER="A4" />
              <OZL TANIM="Baskı Teknolojisi" DEGER="HP Thermal Mürekkep Püskürtmeli" />
              <OZL TANIM="Kartuj Sayısı" DEGER="6" />
              <OZL TANIM="Siyah Baskı Hızı (PPM)" DEGER="34 ppm" />
              <OZL TANIM="Renkli Baskı Hızı (PPM)" DEGER="33 ppm" />
              <OZL TANIM="Baskı Çözünürlük SB (DPI)" DEGER="4800 dpi x 1200 dpi" />
              <OZL TANIM="Baskı Çözünürlük Renkli (DPI)" DEGER="4800 dpi x 1200 dpi" />
              <OZL TANIM="Baskı Kapasitesi (AYLIK)" DEGER="3000 syf." />
              <OZL TANIM="Bellek (STD/MAX)" DEGER="64 MB" />
              <OZL TANIM="Kağıt Kapasitesi (STD/ MAX)" DEGER="100 syf. / 100 sfy." />
              <OZL TANIM="Çift Taraflı Baskı Özelliği" DEGER="Otomatik (isteğe bağlı)" />
              <OZL TANIM="Cd-Dvd Baskı Özelliği" DEGER="Yok" />
              <OZL TANIM="Yazıcı Dilleri" DEGER="HP PCL 3" />
              <OZL TANIM="Standart Arabirim" DEGER="USB - USB 2.0 özellikleriyle uyumludur, PictBridge, Ethernet, bellek kartı yuvaları, HP bt500 Bluetooth Kablosuz Yazıcı ve PC Adaptoru" />
              <OZL TANIM="Opsiyonel Arabirim" DEGER="HP bt500 Bluetooth Kablosuz Yazıcı ve PC Adaptörü" />
              <OZL TANIM="Desteklediği İşletim Sistemleri" DEGER="Windows® 2000 (SP3), Windows® XP Home, Windows® XP Professional, Windows Vista™ İçin Hazır; Mac OS X v10.3.9;Mac OS X v10.4" />
              <OZL TANIM="Garanti (AY)" DEGER="12 Ay Sınırlı Donanım Garantisi" />
              <OZL TANIM="Web Adresi" DEGER="www.hp.com.tr" />
            </OZELLIK>
          </URUN>
    </GRUP>
    </KATEGORI>
    </OZGRUP>
    elimde bu taslakta bir xml dosyası var mysql e aktarmam gereken.XML deki özellikler ürün özelliği ve kodu gibi tüm dataları okuyup işliyebiliyorum fakat kategori olayını hala çözebilmiş değilim.

    Çünkü yazdığım fonksiyon xml deki xml|/OZGRUP/KATEGORI/GRUP/URUN/ altından okuyor.Aslında çok farklı değil yapıyı xml|INDEXGRUP/KATEGORI/ şekline de dönüştürebilirim.

    İstediğim şey her <URUN> etiketi altından aldığım datalarla <KATEGORI> verisinide eşleştirerek veritabanına kayıt edebilmek.

    NOT :(Önemli Nokta) -->

    XML yapısını çözememe nedenim

    PHP:
    <KATEGORI ID=12>
    <
    URUN AD="Elbise">
    </
    URUN>
    </
    KATEGORI>
    şeklinde olmaması bu yapıda aynı kategorideki olan ürünler aynı <KATEGORI> etiketi altında tanımlanmış.

    PHP:
    <KATEGORI AD=Ayakkabı>
    <
    URUN AD="Spor Ayakkabı"/>
    <
    URUN AD="Kundura" />
    </
    URUN>
    </
    KATEGORI>
    Bu konudaki tavsiylerinizi merak ediyorum.

    Saygılarımla,
     
  2. Bay_Oz

    Bay_Oz Üye

    Kayıt:
    5 Nisan 2008
    Mesajlar:
    66
    Beğenilen Mesajlar:
    0
    Meslek:
    E-Ticaret Web Geliştirici
    Şehir:
    izmir
    PHP:
     
    function xmlokumafonksiyonu($kayitlar)
      {
        global 
    $kods;
        foreach(
    $kayitlar as $k => $v)
        {
          if ((
    strpos($k,"GRUP/URUN")!==FALSE) && (strpos($k,"KOD")!==FALSE))
          {
            
    $kods[$v]["kategori_kod"] = $kategori_kod;
            
    $kods[$v]["grup_kod"] = $grup_kod;
          }
          elseif ((
    strpos($k,"GRUP")!==FALSE) && (strpos($k,"KOD")!==FALSE))
          {
            
    $grup_kod $v;
          }
          elseif ((
    strpos($k,"KATEGORI")!==FALSE) && (strpos($k,"KOD")!==FALSE))
          {
            
    $kategori_kod $v;
      }  
      }
      }
     
     
    $kategori $kods[$record["URUN-KOD"]]["kategori_kod"];
    $grup $kods[$record["URUN-KOD"]]["grup_kod"];
     
    bu işi çözmeye çalıştığım fonksiyon.(*ekbilgi)
     
  3. Bay_Oz

    Bay_Oz Üye

    Kayıt:
    5 Nisan 2008
    Mesajlar:
    66
    Beğenilen Mesajlar:
    0
    Meslek:
    E-Ticaret Web Geliştirici
    Şehir:
    izmir
    Arkadaşlar ısrarcı davranmıyacağım ama bu konuda fikir yürütebilen bir arkadaş varsa gerçekten yapacağı en küçük bir düşünce yardımı işimi oldukça kolaylaştıracaktır.

    Teşekkür ederim,
     
  4. akyor35

    akyor35 Daimi Üye

    Kayıt:
    7 Nisan 2005
    Mesajlar:
    1,510
    Beğenilen Mesajlar:
    0
    Şehir:
    İstanbul
    e tamam kategoriyi zaten çekiyorsun.. switch veya if le eşleştirmesini yapıp her koşul içine insert sorgusu yaz...

    önerim: simplexml kullanman. bütün şu anlattıklarını max 10satırlık kodla yapabilirsn
     
    Son düzenleme yönetici tarafından yapıldı: 15 Temmuz 2008
  5. Bay_Oz

    Bay_Oz Üye

    Kayıt:
    5 Nisan 2008
    Mesajlar:
    66
    Beğenilen Mesajlar:
    0
    Meslek:
    E-Ticaret Web Geliştirici
    Şehir:
    izmir
    basit bir switch örneği verebilirmisin benim durumumla ilgili.
     
  6. Bay_Oz

    Bay_Oz Üye

    Kayıt:
    5 Nisan 2008
    Mesajlar:
    66
    Beğenilen Mesajlar:
    0
    Meslek:
    E-Ticaret Web Geliştirici
    Şehir:
    izmir
    PHP:
       function xmlKategori($record)
      {
        global 
    $kods;
        foreach(
    $record as $k => $v)
        {
          if ((
    strpos($k,"GRUP/URUN")!==FALSE) && (strpos($k,"KOD")!==FALSE))
          {
            
    $kods[$v]["kategori_kod"] = $kategori_kod;
            
    $kods[$v]["grup_kod"] = $grup_kod;

          }
          elseif ((
    strpos($k,"GRUP")!==FALSE) && (strpos($k,"KOD")!==FALSE))
          {
            
    $grup_kod $v;
          }
          elseif ((
    strpos($k,"KATEGORI")!==FALSE) && (strpos($k,"KOD")!==FALSE))
          {
            
    $kategori_kod $v;
            }     

     } 
      }

    function 
    xmlUrun($record)
      {
      global 
    $kods;

        
    $ozellik = array();

        foreach(
    $record as $k => $v)
        {
          if (
    strpos($k,"TANIM"))
          {
            
    $tanim $v;
          }
          if (
    strpos($k,"DEGER"))
          {
            
    $deger $v;
          }
          if (
    $tanim && $deger)
          {
            
    $ozellik[$tanim] = $deger;
            
    $tanim "";
            
    $deger "";
        }
        }



           
    $urunkodu $record["URUN-KOD"];

          
    $kategori $kods[$record["URUN-KOD"]]["kategori_kod"];
         
    $grup $kods[$record["URUN-KOD"]]["grup_kod"];


    bu şekilde ürünlerin istediğim kategori ve grup datalarını xml den almayı becerebildim.Kendim örnek olarak üzerine çalıştığım 6 7 kayıt bulunan xml de sonuçları anında alıyorum fakat üzerine çalıştığım kaynak 3mb civarı gerçek kaynak üzerinde çalıştırdığımda kod çok uzun süre çalışıyor ve bir sonuç döndürmeden sürekli devam ediyor.

    Örnek dosyamla kaynak dosyasının stilleri aynı kodda mantıkta bir sorun yok fakat bu süreçleri nasıl hızlandırabileceğimi araştırmaktayım.

    Xml den data okumayı yada bu döngüleri nasıl daha hızlı hale getirebilirim?
     
  7. Bay_Oz

    Bay_Oz Üye

    Kayıt:
    5 Nisan 2008
    Mesajlar:
    66
    Beğenilen Mesajlar:
    0
    Meslek:
    E-Ticaret Web Geliştirici
    Şehir:
    izmir
    Şöyle sorayım sorumu xml de mysql için kullandığımız mysql_num_rows gibi bir sayaç varmıdır?
    Düşüncem şu şekilde dosya boyutu büyük olduğundan dolayı işlem uzun sürüyor ve sonuca ulaşmıyor şöyle birşey geliştirmem mümkünmü ilk 100 kayıdı işle ardından diğer 100 kayıdı işle gibi?
     
  8. Bay_Oz

    Bay_Oz Üye

    Kayıt:
    5 Nisan 2008
    Mesajlar:
    66
    Beğenilen Mesajlar:
    0
    Meslek:
    E-Ticaret Web Geliştirici
    Şehir:
    izmir
    ok xml veri saydırma işlemini çözdüm.

    PHP:
      $kayitsayisi 0;
      function 
    xmlUrun($record)
      {
     
    $kayitsayisi++;
    }

    echo 
    "$kayitsayisi adet ürün kayıt edildi.";
    şimdi bu değeri kullanarak belli limitler koyup yaptırmak istediğim işlemi optimize etmeye çalışacağım sonuçları buradan bildiririm.

    saygılar,
     
  9. Bay_Oz

    Bay_Oz Üye

    Kayıt:
    5 Nisan 2008
    Mesajlar:
    66
    Beğenilen Mesajlar:
    0
    Meslek:
    E-Ticaret Web Geliştirici
    Şehir:
    izmir
    Xml kaynağındaki kategori ve grup datalarını aldığım alttaki fonksiyonu nasıl daha optimum çalışır hale getirebilirim?

    PHP:
       function xmlKategori($record)
      {
        global 
    $kods;
        foreach(
    $record as $k => $v)
        {
          if ((
    strpos($k,"GRUP/URUN")!==FALSE) && (strpos($k,"KOD")!==FALSE))
          {
            
    $kods[$v]["kategori_kod"] = $kategori_kod;
            
    $kods[$v]["grup_kod"] = $grup_kod;

          }
          elseif ((
    strpos($k,"GRUP")!==FALSE) && (strpos($k,"KOD")!==FALSE))
          {
            
    $grup_kod $v;
          }
          elseif ((
    strpos($k,"KATEGORI")!==FALSE) && (strpos($k,"KOD")!==FALSE))
          {
            
    $kategori_kod $v;
            }     

     } 
      }
     
  10. hkir

    hkir Üye

    Kayıt:
    22 Kasım 2007
    Mesajlar:
    37
    Beğenilen Mesajlar:
    0
    bu indexin xml leri değilmi ben bunu yapmıştım tüm Index XML dosyalarını "index_fiyat.xml","index_stok.xml","index_katalog.xml" olarak isimlendirip bana at sana göndereyim en optimize kodu halitkir@hotmail.com