Bazen bir dizi biçiminde bir XML dosyasındaki verilerle çalışmak çok daha kolaydır. XML formatlı verileri PHP ile bir diziye nasıl dönüştürebiliriz? Bu yazıda nasıl olduğunu keşfedeceğiz.

İlk olarak, öğreticinin amaçları için bazı sahte XML verileri tanımlamamız gerekir.

XML 

XML'deki veriler, bir dizi şirketteki sahte çalışanlardan oluşur. Veriler ad, soyad, e-posta ve şirketi gösterir.

<?xml version="1.0" encoding="UTF-8" ?><records>
	<record>
		<first_name>Timon</first_name>
		<last_name>Carson</last_name>
		<email>[email protected]</email>
		<company>Erat Vivamus Inc.</company>
	</record>
	<record>
		<first_name>Boris</first_name>
		<last_name>Alexander</last_name>
		<email>[email protected]</email>
		<company>Nascetur Ridiculus Corp.</company>
	</record>
	<record>
		<first_name>Todd</first_name>
		<last_name>Anthony</last_name>
		<email>[email protected]</email>
		<company>Urna Ut Ltd</company>
	</record>
	<record>
		<first_name>Leo</first_name>
		<last_name>Hayes</last_name>
		<email>[email protected]</email>
		<company>Velit Eget Consulting</company>
	</record>
	<record>
		<first_name>Edan</first_name>
		<last_name>Frederick</last_name>
		<email>[email protected]</email>
		<company>Feugiat LLP</company>
	</record>
	<record>
		<first_name>Calvin</first_name>
		<last_name>Joyce</last_name>
		<email>[email protected]</email>
		<company>Laoreet Lectus Quis Institute</company>
	</record>
	<record>
		<first_name>Germane</first_name>
		<last_name>Gentry</last_name>
		<email>[email protected]</email>
		<company>Commodo Foundation</company>
	</record>
	<record>
		<first_name>Barclay</first_name>
		<last_name>Buckner</last_name>
		<email>[email protected]</email>
		<company>Quis Massa Consulting</company>
	</record>
	<record>
		<first_name>Glenna</first_name>
		<last_name>Rollins</last_name>
		<email>[email protected]</email>
		<company>Urna LLP</company>
	</record>
	<record>
		<first_name>Blaze</first_name>
		<last_name>Boyer</last_name>
		<email>[email protected]</email>
		<company>Quisque Company</company>
	</record>
	<record>
		<first_name>Grady</first_name>
		<last_name>Atkinson</last_name>
		<email>[email protected]</email>
		<company>Dui Quis Consulting</company>
	</record>
</records>

Bu dönüşümü gerçekleştirmenin en basit yolu, adlı bir işlevdir simplexml_load_string. Bu işlev, XML sözdizimini bir dizge olarak yorumlar ve bunu bir SimpleXMLElementnesne türüne dönüştürür . Nesne türünden, bir diziye dönüştürmek için kodlama ve kod çözme gibi başka işlevleri kullanabiliriz.

Bunları adım adım inceleyelim.

Aşama 1

Öncelikle, XML'i $xmldeğişken içinde bir dizge olarak tanımlamamız gerekir . İkinci olarak, simplexml_load_string$ xml değişkenini ileterek işlevi çağırıyoruz .

$xml = '<?xml version="1.0" encoding="UTF-8" ?><records> <record> <first_name>Timon</first_name> <last_name>Carson</last_name> <email>[email protected]</email> <company>Erat Vivamus Inc.</company> </record> <record> <first_name>Boris</first_name> <last_name>Alexander</last_name> <email>[email protected]</email> <company>Nascetur Ridiculus Corp.</company> </record> <record> <first_name>Todd</first_name> <last_name>Anthony</last_name> <email>[email protected]</email> <company>Urna Ut Ltd</company> </record> <record> <first_name>Leo</first_name> <last_name>Hayes</last_name> <email>[email protected]</email> <company>Velit Eget Consulting</company> </record> <record> <first_name>Edan</first_name> <last_name>Frederick</last_name> <email>[email protected]</email> <company>Feugiat LLP</company> </record> <record> <first_name>Calvin</first_name> <last_name>Joyce</last_name> <email>[email protected]</email> <company>Laoreet Lectus Quis Institute</company> </record> <record> <first_name>Germane</first_name> <last_name>Gentry</last_name> <email>[email protected]</email> <company>Commodo Foundation</company> </record> <record> <first_name>Barclay</first_name> <last_name>Buckner</last_name> <email>[email protected]</email> <company>Quis Massa Consulting</company> </record> <record> <first_name>Glenna</first_name> <last_name>Rollins</last_name> <email>[email protected]</email> <company>Urna LLP</company> </record> <record> <first_name>Blaze</first_name> <last_name>Boyer</last_name> <email>[email protected]</email> <company>Quisque Company</company> </record> <record> <first_name>Grady</first_name> <last_name>Atkinson</last_name> <email>[email protected]</email> <company>Dui Quis Consulting</company> </record> </records>';

$xmlObject = simplexml_load_string($xml);

$xmlObjectDeğişkenin çıktısını görelim

Çıktı

xml dönüştürme nesnesi

Adım 2

Şimdi $xmlObjectdeğişkenimiz var, XML'i tamamen XML'e dönüştürmek için biraz kodlama ve kod çözme kullanabiliriz array.

$xml = '<?xml version="1.0" encoding="UTF-8" ?><records> <record> <first_name>Timon</first_name> <last_name>Carson</last_name> <email>[email protected]</email> <company>Erat Vivamus Inc.</company> </record> <record> <first_name>Boris</first_name> <last_name>Alexander</last_name> <email>[email protected]</email> <company>Nascetur Ridiculus Corp.</company> </record> <record> <first_name>Todd</first_name> <last_name>Anthony</last_name> <email>[email protected]</email> <company>Urna Ut Ltd</company> </record> <record> <first_name>Leo</first_name> <last_name>Hayes</last_name> <email>[email protected]</email> <company>Velit Eget Consulting</company> </record> <record> <first_name>Edan</first_name> <last_name>Frederick</last_name> <email>[email protected]</email> <company>Feugiat LLP</company> </record> <record> <first_name>Calvin</first_name> <last_name>Joyce</last_name> <email>[email protected]</email> <company>Laoreet Lectus Quis Institute</company> </record> <record> <first_name>Germane</first_name> <last_name>Gentry</last_name> <email>[email protected]</email> <company>Commodo Foundation</company> </record> <record> <first_name>Barclay</first_name> <last_name>Buckner</last_name> <email>[email protected]</email> <company>Quis Massa Consulting</company> </record> <record> <first_name>Glenna</first_name> <last_name>Rollins</last_name> <email>[email protected]</email> <company>Urna LLP</company> </record> <record> <first_name>Blaze</first_name> <last_name>Boyer</last_name> <email>[email protected]</email> <company>Quisque Company</company> </record> <record> <first_name>Grady</first_name> <last_name>Atkinson</last_name> <email>[email protected]</email> <company>Dui Quis Consulting</company> </record> </records>';
        
$xmlObject = simplexml_load_string($xml);
        
$array = json_decode(json_encode($xmlObject),TRUE); // Convert the object by encoding as json and decoding to associative array.

Şimdi yeni bir $arraydeğişkenimiz var, içeriğine bakalım.

Çıktı

xml'den diziye dönüştürülmüş çıktı

 

Referans için oluşturduğum bir PHP Fiddle'daki bu canlı örneğe göz atabilirsiniz .

SimpleXMLElement sınıfının, dönüştürmeye ek olarak çok daha fazla kullanımı vardır array, bu öğreticide kullanılan işlev ve sınıfla ilgili belgelere aşağıdaki göz atabilirsiniz -

Sonuç

PHP, büyük bir gizli işlevsellik cephaneliğine sahiptir ve bu durumda, XML'e kolaylıkla hitap eder. Kullanıma hazır olan sınıflar ve işlevler son derece faydalıdır. XML verileriyle sık sık çalışıyorsanız, yukarıda listelenen belgeleri kontrol ettiğinizden emin olun.