2009-10-18 12 views
17

SimpleXMLElement'i normal bir STDClass nesnesine, her bir dalı el ile yineleme yapmadan dönüştürmenin hızlı bir yolu bilen var mı? Verileri aldıktan sonra normal bir nesne ile çalışmak daha iyi olur.SimpleXMLObject öğesini STDClass konumuna hızlı dönüştürebilirsiniz?

+0

? Hızlı göreceli :) – Flavius

+0

"Daha iyi hissedeceksin" geçerli bir neden değil imo :) Bir stdClass ile çalışmak için gerçek sebebi nedir? – chelmertz

+3

Eh, bir XML dosyasından veri alıyorum ve daha sonra karmaşık bir sistemde işliyorum. Bu noktadan herhangi bir XML/SimpleXML özel davranışına ihtiyacım yok, sadece ham veri. PHP'nin XML işlevleri, dilin diğer bölümleri kadar iyi belgelenmemeye meyillidir ve ben hala bir basitXML öğesi olmakla birlikte verileri yol boyunca manipüle ederken beklenmedik davranışlardan korkuyorum. STDClass ile ne beklediğimi, nasıl manipüle edileceğini, verileri doğrulayacağını vb. Biliyorum. Bu "daha iyi hissediyorum" uzun sürümüdür. Daha iyi hissetmek? :) –

cevap

4

Ben bir dilek veri ayıklama ve ne olursa olsun veri türü olarak saklayarak iyi kendisi verir XMLReader, yerine SimpleXML kullanarak bakarak öneririz. Düzenli olarak kullanılan belgeler için özellikle kullanıyorum (kullanıyorum, RSS için RSSReader, genişletilmiş), beklenenden daha hızlıdır ve bir bonus olarak SimpleXML'dan daha az bellek kullanır.

+0

Teşekkürler GZipp, buna bakacağım. –

1

Nesneyi yineleme yapmadan dönüştürmenin bir yolu olup olmadığını bilmiyorum. Tahminimce yapamazsın.

Bu thread çıkışını kontrol edebilirsiniz, bir SimpleXML'i bir diziye dönüştürmeyi nasıl gösterir, buna göre uyarlayabilirsiniz.

+0

Reddetme nedeni mi? –

63
$my_std_class = json_decode(json_encode($my_simplexmlelement)); 
$my_assoc_array = json_decode(json_encode($my_simplexmlelement), true); 
+0

Bu bir çekicilik gibi çalışır! – Eric

+1

+1, süper çözüm, harika çalışıyor. – Cyclonecode

+2

+1, Bu kesinlikle seçilen cevap olmalıdır. StdClass'a dönüştürmem için gerekenin nedeni, Drupal'ın SimpleXmlElement nesnesiyle ilgili sorunları olmasıdır. –

2

başka yoludur: Maalesef

(object)(array)$my_simplexmlelement 

çocuklar varsa onlar SimpleXMLElement olarak kalır

O SimpleXMLElement tüm kamu özelliklerini ithal demek
İlgili konular