• 23-02-2010, 16:19:33
    #1
    Arkadaşalar merhaba,

    php ile elinmdeki 2 xml dosyasını nasıl karşılaştırabilirim.Node nameleri ve diğer bütün değişkenler aynı olan 2 xml. biri kayıtlı diğeri ise url de sürekli değişiyor.kontrol et dediğimde urledeki verileri karşılaştırıp yapılan değişiklikleri görmem gerekiyor.

    teşekkürler iyi çalışmalar
  • 23-02-2010, 16:37:30
    #2
    Üyeliği durduruldu
    simplexml objesi ile bunu yapabilirsiniz
  • 23-02-2010, 21:21:58
    #3
    bu objeyi daha önce kullandım ama sadece xml verilerini listelemek için.Nasıl kullanabilirim.Kısa bir örnek verebilirmisiniz.

    Teşekkürler...
  • 24-02-2010, 09:21:06
    #4
    Üyeliği durduruldu
    omr adlı üyeden alıntı: mesajı görüntüle
    Kısa bir örnek verebilirmisiniz
    hocam forumda aratirsaniz kisa ornekleri var
  • 24-02-2010, 09:34:28
    #5
    Toplamda 25 konu açılmış ama replication'dan bahseden bile yok.

    Teşekkürler...
  • 24-02-2010, 16:20:49
    #6
    şimdi ben aşağıdaki kodlar ile 2 farklı xml alıyorum.( sadece içerik farkı var node'lar ve diğerleri aynı )

       <?php
    
    function ayikla($__url)
    {
        $xml_values = array();
        $contents = file_get_contents($__url);
        $parser = xml_parser_create('');
        if(!$parser)
            return false;
    
        xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, 'UTF-8');
        xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
        xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
        xml_parse_into_struct($parser, trim($contents), $xml_values);
        xml_parser_free($parser);
        if (!$xml_values)
            return array();
       
        $xml_array = array();
        $last_tag_ar =& $xml_array;
        $parents = array();
        $last_counter_in_tag = array(1=>0);
        foreach ($xml_values as $data)
        {
            switch($data['type'])
            {
                case 'open': 
                    $last_counter_in_tag[$data['level']+1] = 0;
                    $new_tag = array('name' => $data['tag']);
                    if(isset($data['attributes']))
                        $new_tag['attributes'] = $data['attributes'];
                    if(isset($data['value']) && trim($data['value']))
                        $new_tag['value'] = trim($data['value']);
                    $last_tag_ar[$last_counter_in_tag[$data['level']]] = $new_tag;
                    $parents[$data['level']] =& $last_tag_ar;
                    $last_tag_ar =& $last_tag_ar[$last_counter_in_tag[$data['level']]++];
                    break;
    
                case 'complete':
                   $new_tag = array('name' => $data['tag']); 
                    if(isset($data['attributes']))
                        $new_tag['attributes'] = $data['attributes'];
                    if(isset($data['value']) && trim($data['value']))
                        $new_tag['value'] = trim($data['value']);
    
                    $last_count = count($last_tag_ar)-1;
                    $last_tag_ar[$last_counter_in_tag[$data['level']]++] = $new_tag;
                    break;
    
                case 'close':
                    $last_tag_ar =& $parents[$data['level']];
                    break;
                default:
                    break;
            }
        }
        return $xml_array;
    }
    
     $url = $_POST['url'];
    	
     $arr   = ayikla('deneme.xml');  // Veritabanındaki XML
     $arr2 = ayikla($url); //  Url'den gelen XML
     
    
    
     print_r('<hr>');
     print_r($arr); 
     print_r('<hr>');
    
      print_r($arr2);
      print_r('<hr>');
    ?>
    Amacım bu verilerden ulr'den gelen xml'deki verileri veritabanındaki veriler ile karşılaştırmak.değişiklik olmuşsa bunu bildirmek.
    Nasıl yapabilirim.Sabahdan beri uğraşıyorum

    Teşekkürler iyi çalışmalar.
  • 24-02-2010, 17:23:25
    #7
    ...
  • 24-02-2010, 17:47:21
    #8
    iki farklı xml'deki düğümleri karşılaştırıcam sadece.Fakat bu xmldeki düğümlerin isimleri aynı.

    Örnek olarak

    <productList>
    <product>
    <UrunID deneme="11880">8063</UrunID>
    <UrunAdi>Goldstore 14 Ayar Altın Kalp Yüzük GRF8063</UrunAdi>
    <Marka>Goldstore</Marka>
    <KategoriAdi>Altın Fantezi Yüzük</KategoriAdi>
    <KategoriID>104</KategoriID>
    <SatisFiyatiKDVHaric>156.23</SatisFiyatiKDVHaric>
    <SatisFiyatiKDVDahil>175.2</SatisFiyatiKDVDahil>
    <AlisFiyatiKDVHaric>130.99</AlisFiyatiKDVHaric>
    <AlisFiyatiKDVDahil>145.42</AlisFiyatiKDVDahil>
    <HarfBasiFiyatKDVDahil>0.00</HarfBasiFiyatKDVDahil>
    <ParaBirimi>TL</ParaBirimi>
    <IskontoYuzdesi>17</IskontoYuzdesi>
    <Stok id="2">var</Stok>
    <GarantiSuresi>5</GarantiSuresi>
    <GarantiSuresiBirimi>Yil</GarantiSuresiBirimi>
    <TeslimatSuresi>1</TeslimatSuresi>
    <TeslimatSuresiBirimi>Gun</TeslimatSuresiBirimi>
    <UrunOlcusu>1-36</UrunOlcusu>
    <UrunBilgisi></UrunBilgisi>
    <MetalBilgileri>
    <Ayar>14</Ayar>
    <Agirlik>1.81</Agirlik>
    <AgirlikBirimi>gr</AgirlikBirimi>
    </MetalBilgileri>
    <Resim>http://www.goldstore.com.tr/upload/product/raw/GRF8063.JPG</Resim>
    </product>
    <product>
    <UrunID>651</UrunID>
    <UrunAdi>Goldstore 14 Ayar Altın Tek Taş Yüzük GRSW651</UrunAdi>
    <Marka>Goldstore</Marka>
    <KategoriAdi a="dsa">Altın Tektaş Yüzük</KategoriAdi>
    <KategoriID>101</KategoriID>
    <SatisFiyatiKDVHaric>251.95</SatisFiyatiKDVHaric>
    <SatisFiyatiKDVDahil>278.4</SatisFiyatiKDVDahil>
    <AlisFiyatiKDVHaric>211.84</AlisFiyatiKDVHaric>
    <AlisFiyatiKDVDahil>231.07</AlisFiyatiKDVDahil>
    <HarfBasiFiyatKDVDahil>0.00</HarfBasiFiyatKDVDahil>
    <ParaBirimi>TL</ParaBirimi>
    <IskontoYuzdesi>17</IskontoYuzdesi>
    <Stok var="3">var</Stok>
    <GarantiSuresi var="1" deneme="2">5</GarantiSuresi>
    <GarantiSuresiBirimi>Yil</GarantiSuresiBirimi>
    <TeslimatSuresi>1</TeslimatSuresi>
    <TeslimatSuresiBirimi>Gun</TeslimatSuresiBirimi>
    <UrunOlcusu>1-36</UrunOlcusu>
    <UrunBilgisi>df</UrunBilgisi>
    <MetalBilgileri>
    <Ayar>14</Ayar>
    <Agirlik>3.74</Agirlik>
    <AgirlikBirimi>gr</AgirlikBirimi>
    </MetalBilgileri>
    <Resim>http://www.goldstore.com.tr/upload/product/raw/GRSW651.JPG</Resim>
    </product>
    </productList>
    yukarıdaki url'den gelen xml

    <productList>
    <product ad="deneme">
    <UrunID>651</UrunID>
    <UrunAdi>Goldstore 14 Ayar Altın Tek Taş Yüzük GRSW651</UrunAdi>
    <Marka>Goldstore</Marka>
    <KategoriAdi a="dsa">Altın Tektaş Yüzük</KategoriAdi>
    <KategoriID>101</KategoriID>
    <SatisFiyatiKDVHaric>251.95</SatisFiyatiKDVHaric>
    <SatisFiyatiKDVDahil>278.4</SatisFiyatiKDVDahil>
    <AlisFiyatiKDVHaric>211.84</AlisFiyatiKDVHaric>
    <AlisFiyatiKDVDahil>231.07</AlisFiyatiKDVDahil>
    <HarfBasiFiyatKDVDahil>0.00</HarfBasiFiyatKDVDahil>
    <ParaBirimi>TL</ParaBirimi>
    <IskontoYuzdesi>17</IskontoYuzdesi>
    <Stok var="3">var</Stok>
    <GarantiSuresi var="1" deneme="2">5</GarantiSuresi>
    <GarantiSuresiBirimi>Yil</GarantiSuresiBirimi>
    <TeslimatSuresi>1</TeslimatSuresi>
    <TeslimatSuresiBirimi>Gun</TeslimatSuresiBirimi>
    <UrunOlcusu>1-36</UrunOlcusu>
    <UrunBilgisi>df</UrunBilgisi>
    <MetalBilgileri>
    <Ayar>14</Ayar>
    <Agirlik>3.74</Agirlik>
    <AgirlikBirimi>gr</AgirlikBirimi>
    </MetalBilgileri>
    <Resim>http://www.goldstore.com.tr/upload/product/raw/GRSW651.JPG</Resim>
    </product>
    </productList>
    buda kayıtlı olan.Amacım bu kayıtlı olan içerisine diğerindeki değişiklikleri aktarmak.Tabi burada "attributes" 'lerde de değişim olmuş olabilir.Bunlarıda kontrol etmeliyim.Nasıl olucak bu.Rss dışında xml ile hiç uğraşmadım.Acayip pişman oldum.
  • 24-02-2010, 21:39:35
    #9
    herhalde konu baya karmaşık.Yardımlarınız için teşekkür ederim.Fikri olan olursa lütfen yazmaktan çekinmesin

    Teşekkürler iyi çalışmalar...