Zenetár a webszerverünkön, avagy XML használata PHP 5 alatt. Ercsey Balázs (laze) – netpeople.hu
Zenetár a webszerverünkön Miről lesz szó? XML Objektum orientált szemléletmód PHP4 PHP5
Az XML W3C szabvány üzleti érdekek felett áll Mozaikszó: eXtensible Markup Language ~kiterjeszhető leíró nyelv Különböző médiumok közti kapcsolat, Adatszerkezetek leírása
Az XML Elsőre kísértetiesen hasonlít a HTML- hez… …de van pár megkötés: Kell lennie záró párnak, vagy az elemet kell zárni A paraméter értékét idézőjelbe kell tenni: szoveg
Az XML Köztes nyelv Más nyelvek leírására szolgál, például: WDDX, RSS, XHTML A célnak leginkább megfelelő saját struktúra, és saját elem definíció lehetséges DTD (Document Type Defintion) Adatátvitel különböző rendszerek, például Macromedia Flash és PHP között.
Zene, zene, zene Az adathalmaz kerete: <?php $xmlData = <<<XML... XML; ?>
Zene, zene, zene Az adathalmaz egyetlen eleme: Katjusha Leningrad Cowboys Thank You Very Many •Ebből lehet még tetszőleges számú darab
Zene, zene, zene Észrevételek: Saját struktúra, saját, beszédes elemnevek Hasonló struktúrákra példa: iTunes exportálási lehetősége Házi feladat elemezni, feldolgozni!
Feldolgozás… PHP4 alatt: Külső PHP modul (expat, sablotron) lassabb Külön erőforrás azonosító Két fő lehetőség: SAX (Simple API for XML) – Esemény alapú kezelés DOM (Document Object Model) – A dokumentum strukturális kezelése
Feldolgozás… PHP5 alatt több lehetőség van: SAX DOM SimpleXML A továbbiakban ezzel foglalkozunk
Feldolgozás… A SimpleXML előnyei: Nem bővítményként fut, az új libxml2 modult használja, ami a PHP5 része sokkal gyorsabb Nem kell külön erőforrás azonosítót létrehozni Minden adat objektum orientált módon érhető el
Feldolgozás… 1. Példa, elemek listázása: Kiíratjuk a számok címeit... A szám címe
Feldolgozás... Forráskód: <?php include ’tracks.php’; $xmlObject = simplexml_load_string( $xmlData ); foreach( $xmlObject->track as $track ) { echo( $track->title.’ ’ ); } ?>
Feldolgozás... Észrevételek: Rendkívül egyszerű beolvasás Azonnal egy objektum áll a rendelkezésünkre: $xmlObject = simplexml_load_string( $xmlData ); Amit tovább bontva is objektumként kezelhetünk: $track->title
Feldolgozás… 2. Példa, elemek paramétereinek listázása Kiíratjuk az albumok címeit és típusait... Az album címe
Feldolgozás… Megint forráskód : <?php include ’tracks.php’; $xmlObject = simplexml_load_string( $xmlData ); foreach( $xmlObject->track as $track ) { echo( $track->album ); echo( ’ (’.$track->album[’type’].’) ’ ); } ?>
Feldolgozás… XPath kezelése SimpleXML által Az XPath: Külön szabvány Elemek keresésére szolgál XML alapú forrásban XML, XHTML, WDDX,... Az elem elérése független az elem helyétől Gyorsabb, mint az elemek egyenkénti, manuális ellenőrzése
Feldolgozás… 3. Példa, XPath kezelése Kiválasztó: //author illeszkedik minden elemre a dokumentumban, bárhol legyen is. Válogassunk ki minden előadót! Az előadó neve
Feldolgozás… Íme, a forráskód : <?php include ’tracks.php’; $xmlObject = simplexml_load_string( $xmlData ); foreach( $xmlObject->xpath( ’//author’ ) as $author ) { echo( $author.’ ’ ); } ?>
Módosítás SimpleXML-ben megvan a módosítás lehetősége A beolvasáskor kapott objektumokon keresztül A végeredmény a megváltoztatott XML forrás
Módosítás 4. Példa, elem módosítása Az egyik szám címének megváltoztatása: Előtte: A régi cím Utána: Az új cím
Módosítás Az elmaradhatatlan forráskód: <?php include ’tracks.php’; $xmlObject = simplexml_load_string( $xmlData ); $xmlObject->track->title = ’Ballad Of The Leningrad Cowboys’; echo $xmlObject->asXML(); ?>
Végszó Tehát, mint azt láthattuk, az objektum orientált XML kezelés PHP5 alatt: Gyorsabb Jelentősen egyszerűbb Kiváló megoldás strukturált adatkezelésre
Linkek Néhány hasznos oldal: - XML: –XPath: –libmxml2: –PHP 5 Manual / SimpleXML: