Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

PHP. XML


Radiance

Öne çıkan mesajlar

E o halde hepsini alip veri tabanina kaydedebilecegin bir formata donustureceksin. Zor bir yani yok gercekten istedigin seyin. Okumaya/yazmaya useniyorsun sanki biraz ? =)

Bak surada guzel ornekler var. Senin kullanman gereken de bu;
http://www.php.net/manual/en/function.simplexml-load-string.php
Link to comment
Sosyal ağlarda paylaş

  • 2 hafta sonra ...
$Veri = array();
$kaynak = file_get_contents("catalog.xml);
$temp = split("",$kaynak);
for ($i=1;$i<=2462;$i++){
if(trim($temp[$i])==''){continue;}
preg_match('/(.*)/i', $temp[$i], $Nm);
preg_match('/(.*)/i', $temp[$i], $Cn);
preg_match('/(.*)/i', $temp[$i], $Tm);
preg_match('/(.*)/i', $temp[$i], $Dmt);
preg_match('/(.*)/i', $temp[$i], $Pct);
array_push($Veri,array($Nm[1],$Cn[1],$Tm[1],$Dmt[1],$Pct[1]));
}
echo '
'; 
for($x=0;$x<=2461;$x++) {
echo "n".'Urun Adi : ';
@print_r($Veri[$x][0]);
echo "n".'Parca Sayisi : ';
@print_r($Veri[$x][1]);
echo "n".'Marka : ';
@print_r($Veri[$x][2]);
echo "n".'Kutu Boyutu : ';
@print_r($Veri[$x][3]);
echo "n".'Resim : ';
@print_r($Veri[$x][4]);
echo "n".'

';
echo $a++;
}
echo '
';
?>

Bu kod ile verileri cekiyorum ama
 
tarzında olan verileri alamıyorum bunları almak icin ne yapmam gerekli.
Link to comment
Sosyal ağlarda paylaş

O kodla dediğin verileri alamaman doğal. O kodla yalnızca belli node isimleri vermiş, o isimlerdeki nodeların içindeki yazıları almışsın.


Burdaki "resim.jpg" verilerini bu şekilde almazsın. Url dediği şey, Pct node'unun bi attribute'u ve "resim.jpg" de bunun değeri; içindeki yazı değil.
Yapman gereken, ... şeklinde bi kontrol değil de;

<node_ismi attribute_ismi1="değer1" attribute_ismi2="değer2"...>...</node_ismi>

şeklinde, her node için her attribute'un ve bunların değerlerinin de ele alındığı bi kontrol. Öte yandan, child/parent node'lara da hiç dikkat etmiyo buraya yazdığın kod. Hangi Cpn hangi P'ye ait, hangi Products'a ait belli değil. Bu da kodunun güvenilebilirliğini, hata kaldırabilirliğini azaltıyo.

Agresif olmana gerek yok, topik başından beri böyle bi tavır takınmışsın. Ego tatmini yapıldığını sanman da bundandır.
SimpleXML harika bi öneri, senin burada yazmaya, yapmaya çalıştığın her şey yapılıp önüne sunuluyo. İstediğin node'un istediğin child'ının istediğinin attribute'unu, içindeki yazıyı alabiliyosun. Neden gözü kapalı reddettiğini anlayamadım. Hem SimpleXML'in çalışması için PHP5 olması yeterli ayrıca, sunucuyla bi alakası olduğunu sanmıyorum. Bi hata falan veriyosa, ona bakalım, daha sağlıklı bi cevap yazabiliriz.
Link to comment
Sosyal ağlarda paylaş

Fazla tepki göstermiş olabilirim kaç gündür bununla ugrasıyorum. denemedigim yöntem kalmadı.

bu koda sunu ekledim.
preg_match('//i', $temp[$i], $Pct);

bir arkadaş yardım etti. o resimleri aldıgını söylüyor ama ben alamıyorum.

SimpleXML olayına gelince.

Kullandıgım Kod

- -

00013 Parça Sayısına Göre Puzzlelar 500 PARÇA JUMBO PUZZLE JUM500 THREE PUPPIES 5x23x32 - 49*35 00013

'; $XML = new SimpleXmlElement($DATA, LIBXML_NOCDATA); echo $XML->P[0]->Nm; echo $XML->P[0][OID];



Verdigi Hata:
Fatal error: Cannot instantiate non-existent class: simplexmlelement in XML2.php on line 22

Satır 22 : $XML = new SimpleXmlElement($DATA, LIBXML_NOCDATA);
Link to comment
Sosyal ağlarda paylaş

php'den anlamam.. şimdi simplexml'e baktım, iyiymiş. kolay da.

ama öncelikle xml string'inin içinde xml standartlarını kullanmamışsın.. muhtemelen kopyaladığın editör/reader'ın expand için kullandığı "-" işaretini almışsın..

xml'in şöyle olmalı:

<?xml version="1.0" encoding="utf-8" ?><Products UserName="" Password=""><P OID="1"><Cd>00013</Cd><Cpn>Parça Sayısına Göre Puzzlelar</Cpn><Cn>500 PARÇA</Cn><Tm>JUMBO PUZZLE</Tm><Md /><Nm>JUM500 THREE PUPPIES</Nm><Dsc /><Pct Url="[puzzledunyasi.com.tr]; /><Dmt>5x23x32</Dmt><Dyn><Dp T="Text" N="Boyut">49*35</Dp><Dp T="Text" N="mal kodu">00013</Dp></Dyn></P></Products>
Link to comment
Sosyal ağlarda paylaş

XML öyle zaten buraya kopyalarken öyle almış. zaten bunuda ben yapmadım başka bi kaynaktan cekiyorum

beynim durdu artık neler yapıyorum ben bile anlam veremiyorum


Hata 1

SimpleXMLElement::__construct() [simplexmlelement.--construct]:

Hata 2
Uncaught exception 'Exception' with message 'String could not be parsed as XML' in C:Inetpubvhostsabostanci.nethttpdocsXML2.php:20 Stack trace: #0 C:Inetpubvhostsabostanci.nethttpdocsXML2.php(20): SimpleXMLElement->__construct('
Link to comment
Sosyal ağlarda paylaş

Sınıfı göremediğine göre aklıma gelen ilk olasılık PHP sürümünün 5 olmaması. Eğer yenisini kurabiliyosan kur derim. Yok eğer kuramıyosan, SimpleXML işi yatar.

bu durumda bi öneri

Böyle bi durumda kendi sınıflarını yazmanı tavsiye ederim. XML dökümanı, düğümler ve bu düğümlerin attribute'larını tutarsın. Dökümanda dökümanın adresi ve en üst seviyedeki nodeların bi listesi tutulur. Her node için node ismi, varsa parent node, varsa child node'ların listesi, varsa attribute'ların listesi ve varsa node'un içeriği tutulur. Attribute'lar için de ait olduğu node'u ve attribute ismi ile değerini tutarsın.
Tek yönlü bi okuma yapmaktansa bu şekilde bi yapı oluştur derim. Büyük XML dosyalarında bellek sorunu çıkarabilir tabii.



Ben de regexten pek anlamam o yüzden onun için bi şey diyemicem.
Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...