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 SimpleXMLElement
nesne 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 $xml
değ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);
$xmlObject
Değişkenin çıktısını görelim
Çıktı
Adım 2
Şimdi $xmlObject
değ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 $array
değ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 -
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.