XML'yi PHP ile Diziye Dönüştürme

XML ilk kez görüntülendiğinde oldukça ürkütücüdür, ağır ağaç benzeri yapısı oldukça kafa karıştırıcı olabilir.

php - 06-09-2020 17:26

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>tempus.non@enimSuspendissealiquet.ca</email> <company>Erat Vivamus Inc.</company> </record> <record> <first_name>Boris</first_name> <last_name>Alexander</last_name> <email>erat@risusNuncac.co.uk</email> <company>Nascetur Ridiculus Corp.</company> </record> <record> <first_name>Todd</first_name> <last_name>Anthony</last_name> <email>pede.Cum@nuncQuisque.net</email> <company>Urna Ut Ltd</company> </record> <record> <first_name>Leo</first_name> <last_name>Hayes</last_name> <email>velit.Pellentesque.ultricies@felispurus.com</email> <company>Velit Eget Consulting</company> </record> <record> <first_name>Edan</first_name> <last_name>Frederick</last_name> <email>pellentesque.Sed@magnaPraesent.net</email> <company>Feugiat LLP</company> </record> <record> <first_name>Calvin</first_name> <last_name>Joyce</last_name> <email>ultrices.posuere.cubilia@pede.com</email> <company>Laoreet Lectus Quis Institute</company> </record> <record> <first_name>Germane</first_name> <last_name>Gentry</last_name> <email>arcu@insodales.net</email> <company>Commodo Foundation</company> </record> <record> <first_name>Barclay</first_name> <last_name>Buckner</last_name> <email>vel@dolorquam.ca</email> <company>Quis Massa Consulting</company> </record> <record> <first_name>Glenna</first_name> <last_name>Rollins</last_name> <email>mi.lacinia.mattis@condimentumDonec.com</email> <company>Urna LLP</company> </record> <record> <first_name>Blaze</first_name> <last_name>Boyer</last_name> <email>eu.ligula@ipsumleo.net</email> <company>Quisque Company</company> </record> <record> <first_name>Grady</first_name> <last_name>Atkinson</last_name> <email>luctus@pedeNunc.net</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>tempus.non@enimSuspendissealiquet.ca</email> <company>Erat Vivamus Inc.</company> </record> <record> <first_name>Boris</first_name> <last_name>Alexander</last_name> <email>erat@risusNuncac.co.uk</email> <company>Nascetur Ridiculus Corp.</company> </record> <record> <first_name>Todd</first_name> <last_name>Anthony</last_name> <email>pede.Cum@nuncQuisque.net</email> <company>Urna Ut Ltd</company> </record> <record> <first_name>Leo</first_name> <last_name>Hayes</last_name> <email>velit.Pellentesque.ultricies@felispurus.com</email> <company>Velit Eget Consulting</company> </record> <record> <first_name>Edan</first_name> <last_name>Frederick</last_name> <email>pellentesque.Sed@magnaPraesent.net</email> <company>Feugiat LLP</company> </record> <record> <first_name>Calvin</first_name> <last_name>Joyce</last_name> <email>ultrices.posuere.cubilia@pede.com</email> <company>Laoreet Lectus Quis Institute</company> </record> <record> <first_name>Germane</first_name> <last_name>Gentry</last_name> <email>arcu@insodales.net</email> <company>Commodo Foundation</company> </record> <record> <first_name>Barclay</first_name> <last_name>Buckner</last_name> <email>vel@dolorquam.ca</email> <company>Quis Massa Consulting</company> </record> <record> <first_name>Glenna</first_name> <last_name>Rollins</last_name> <email>mi.lacinia.mattis@condimentumDonec.com</email> <company>Urna LLP</company> </record> <record> <first_name>Blaze</first_name> <last_name>Boyer</last_name> <email>eu.ligula@ipsumleo.net</email> <company>Quisque Company</company> </record> <record> <first_name>Grady</first_name> <last_name>Atkinson</last_name> <email>luctus@pedeNunc.net</email> <company>Dui Quis Consulting</company> </record> </records>'; $xmlObject = simplexml_load_string($xml);

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

Çıktı

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>tempus.non@enimSuspendissealiquet.ca</email> <company>Erat Vivamus Inc.</company> </record> <record> <first_name>Boris</first_name> <last_name>Alexander</last_name> <email>erat@risusNuncac.co.uk</email> <company>Nascetur Ridiculus Corp.</company> </record> <record> <first_name>Todd</first_name> <last_name>Anthony</last_name> <email>pede.Cum@nuncQuisque.net</email> <company>Urna Ut Ltd</company> </record> <record> <first_name>Leo</first_name> <last_name>Hayes</last_name> <email>velit.Pellentesque.ultricies@felispurus.com</email> <company>Velit Eget Consulting</company> </record> <record> <first_name>Edan</first_name> <last_name>Frederick</last_name> <email>pellentesque.Sed@magnaPraesent.net</email> <company>Feugiat LLP</company> </record> <record> <first_name>Calvin</first_name> <last_name>Joyce</last_name> <email>ultrices.posuere.cubilia@pede.com</email> <company>Laoreet Lectus Quis Institute</company> </record> <record> <first_name>Germane</first_name> <last_name>Gentry</last_name> <email>arcu@insodales.net</email> <company>Commodo Foundation</company> </record> <record> <first_name>Barclay</first_name> <last_name>Buckner</last_name> <email>vel@dolorquam.ca</email> <company>Quis Massa Consulting</company> </record> <record> <first_name>Glenna</first_name> <last_name>Rollins</last_name> <email>mi.lacinia.mattis@condimentumDonec.com</email> <company>Urna LLP</company> </record> <record> <first_name>Blaze</first_name> <last_name>Boyer</last_name> <email>eu.ligula@ipsumleo.net</email> <company>Quisque Company</company> </record> <record> <first_name>Grady</first_name> <last_name>Atkinson</last_name> <email>luctus@pedeNunc.net</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ı

 

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 -

simplexml_load_string SimpleXMLElement 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.

Günün Diğer Haberleri