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
php ile xml karşılaştırma
10
●1.842
- 24-02-2010, 09:21:06Üyeliği durdurulduhocam forumda aratirsaniz kisa ornekleri varomr adlı üyeden alıntı: mesajı görüntüle
- 24-02-2010, 16:20:49ş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:47:21iki 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.