XML-tiedoston pääte on .xml ja tiedoston alussa xml-elementissä kerrotaan xml-versio sekä tekstin koodaustapa (Ä.Ö ja Å kirjaimet eli
tiedostossa käytetään ia aakkosia.
Seuraaville elementeille ohjelmoitsija saa antaa vapaasti nimet, suositus ettei elementtien nimissä
käytetä Ä, Ö tai Å kirjaimia.
>Elementtien nimet kannattaa valita kuvaamaan xml-tiedostoon tallennettavia asioita.
Sisimpiä elementtejä voi kutsua objekteiksi joilla on arvo, arvo voi olla numero tai merkkijono.
Kohdassa XML-tiedoston luominen, luodaan autot.xml tiedosto johon voidaan tallentaa tietoja useista autoista, ylimmän tason elementin nimi
on autot. Seuraavan tason elementin nimi on merkki, jolloin tiedosto voi sisältää useita auto-merkkejä ja usean nimisiä autoja sekä näiden
malleja.
Halutaan luoda seuraava autot.xml niminen XML-tiedosto:
<?xml version="1.0" encoding="UTF-8"?> <autot> <merkki id="1"> <nimi>Skoda</nimi> <malli>Octavia</malli> <kori>sedan</kori> </merkki> </autot>
Luodaan autot.xml tiedosto:
<?php $dom = new DOMDocument('1.0','UTF-8'); $dom->formatOutput = true; $root = $dom->createElement('autot'); $dom->appendChild($root); $merkki = $dom->createElement('merkki'); $root->appendChild($result); $merkki->setAttribute('id', 1); $merkki->appendChild( $dom->createElement('nimi', 'Skoda') ); $merkki->appendChild( $dom->createElement('malli', 'Octavia') ); $merkki->appendChild( $dom->createElement('kori', 'sedan') ); echo '<xmp>'. $dom->saveXML() .'</xmp>'; $dom->save('autot.xml') or die('XML Create Error'); ?>
XML-tiedoston henkilo.xml koodaus: <?xml version="1.0" encoding="UTF-8"?> <henkilo status = "ok"> <opiskelija henk_no = "11"> <nimi>Anttonen Antti</nimi> <luokka>G-404</luokka> <opiskelija> <opiskelija henk_no = "12"> <nimi>Virtanen Ville</nimi> <luokka>E-512</luokka> </opiskelija> </henkilo> PHP-koodaus jolla näytetään xml-tiedoston kaikki tiedot: <?php $xml = simplexml_load_file('http://tietokanta.dy.fi/ohjelmointi/uusi_opiPHP/POISTA/PHP_XML/henkilo.xml'); echo '<h3>Henkilö listaus</h3>'; $lista = $xml->opiskelija; for ($i = 0; $i < count($lista); $i++) { echo '<b>Henkilo no:</b> ' . $lista[$i]->attributes()->henk_no . '<br>'; echo 'Nimi: ' . $lista[$i]->nimi . '<br>'; echo 'Luokka: ' . $lista[$i]->luokka . '<br><br>'; } ?>
Tämä esimerkki sivu hakee xml-tiedoston palvelimelta jolloin tiedoston osoite täytyy olla tiedoston
www-osoite.
Jos xml-tiedosto käsitellään php-koodauksella joka siirtää xml-tiedot esimerkiksi
muuttujilla, xml-tiedoston osoitteeksi riittää tiedoston nimi.
Esimerkeissä käytettävä kirjasto.xml niminen XML-tiedosto:
<?xml version="1.0" encoding="UTF-8"?> <kirjasto> <kirja> <nimi> Hopeisen hummerihaarukan tapaus </nimi> <kirjoitttaja tyyli="rikos"> Alan Bradley </kirjoittaja> <tiedot> Hurmaava yksitoistavuotias harrastelijasalapoliisi Flavia de Luce uskaltautuu kylän markkinoilla mustalaisnaisen telttaan ja järkyttyy kuulemastaan ennustuksesta pahanpäiväisesti. </tiedot> </kirja> <kirja> <nimi> Kyberias </nimi> <kirjoitttaja tyyli="scifi"> Stanislaw Lem </kirjoittaja> <tiedot> Kyberiaksen utopistinen maailma robotteineen ja huimine keksintöineen muistuttaa oudolla tavalla omaamme – sen ihmisiä ja instituutioita. </tiedot> </kirja> <kirja> <nimi> PATRIARKKOJA JA OLIGARKKEJA </nimi> <kirjoitttaja tyyli="elämänkerta"> Rene Nyberg </kirjoittaja> <tiedot> Pitkän diplomaattiuran tehneen Venäjän-tuntijan esseekirja kertoo Suomen ja Venäjän lähihistoriasta, mutta valaisee myös Neuvostoliiton todellisuutta </tiedot> </kirja> </kirjasto>
Ladataan kirjasto.xml niminen XML-tiedosto kirjat- nimisen objektiin ja näytetään sen sisältö var_dup() funktiolla:
Edellä tulee testatuksi onko xml-tiedosto kirjoitettu oikein, mikäli ei ole koodaus antaa ilmoituksen false-ilmoituksen. Tässä muodossa tulostus ei ole mitenkään hyödyllinen muutoin kuin tutkittaessa tarkemmin sen sisältöä.
Paremmin muotoillun tulosteen xml-tiedoston sisällöstä saa asXML()-metodilla.
Haluttaessa xml-tiedoston sisällöstä esittää kaikki kirjailijat tulosteen saa xpath()-metodilla:
Esimerkin koodaus:
<?php $tiedot = simplexml_load_file('http://tietokanta.dy.fi/ohjelmointi/uusi_opiPHP/POISTA/PHP_XML/kirjasto.xml'); $kirjailijat = $tiedot->xpath("/kirjasto/kirja/kirjoittaja"); foreach($kirjailijat AS $kirjoittaja){ echo $kirjoittaja . "<br/>"; } ?>