Tutustu aluksi linkistä Microsoft-sivulla XM-koodauksen perusteisiin.
XML-tiedoston nimen pääte on xml (esimerkiksi luettelo.xml) ja XML-tiedosto voidaan luoda esimerkiksi Windows Muistio, Linux Kate Notepad++, Visual Code Studio. Luodessa ja tallentaessa xml-tiedosto on oltava valittuna all files.
XML-koodauksen alkeita:
XML-tiedoston sisällön voi myös kirjoittaa elementeineen valmiiksi, tämä on hyvä tapa hahmottaa tiedoston rakenne
Elementtien nimet kannattaa valita kuvaamaan xml-tiedostoon tallennettavia asioita.
Muista!
Ä, Ö ja Å kirjaimien käyttäminen elementtien nimissä saattaa aiheuttaa ongelmia !
Halutaan totettaa 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>
Tee aluksi teksti-editorissa tyhjä tiedosto ja nimeä se autot.xml nimiseksi.
Koodaus jolla toteutetaan autot.xml tiedoston sisältö:
<?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 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>
<div class="vari">
<?php
$xml = simplexml_load_file('http://tietokanta.dy.fi/ohjelmointi/........./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>';
}
?>
</div>
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-muuttujaan ja näytetään sen sisältö var_dup() -funktiolla:
<div class="vari">
<?php
$kirjat = simplexml_load_file('http://tietokanta.dy.fi/ohjelmointi/uusi_opiPHP/......../kirjasto.xml');
var_dump($kirjat);
?>
</div>
Tulos www-sivulla:
Edellä tulee testatuksi onko xml-tiedosto kirjoitettu oikein, mikäli ei ole koodaus antaa ilmoituksen false-ilmoituksen.
Paremmin muotoillun tulosteen xml-tiedoston sisällöstä saa asXML() -metodilla.
<div class="vari">
<?php
$kirjat = simplexml_load_file('http://tietokanta.dy.fi/ohjelmointi/uusi_opiPHP/POISTA/PHP_XML/kirjasto.xml')
or die("Virhe: Haluamaasi tiedostoa ei voi avata.");
echo htmlspecialchars($kirjat->asXML());
<>
</div>
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/>";
}
?>
1. Esimerkki, PHP-tiedosto joka kirjoittaa tekstinkäsittely-ohjelmalla luotuun kirjoitus.xml tiedostoon sisällön.
<?php
$writer = new XMLWriter();
$writer->openUri('kirjoitus.xml');
$writer->setIndentString(' ');
$writer->setIndent(true);
$writer->startDocument( '1.0', 'UTF-8' );
$writer->startElement('Opiskelija');
$writer->startElement('Opinnot');
$writer->writeAttribute('id', '1');
$writer->writeElement('nimi', 'Arto Aurajuusto');
$writer->writeElement('Fysiikka', '8.1');
$writer->writeElement('Kemia', '8.4');
$writer->endElement(); /*tekee </Opinnot> */
$writer->flush();
$writer->endElement(); /*tekee </Opiskelija> */
$writer->endDocument();
?>
1. TEHTÄVÄ. Testaa yllä olevan esimerkki 1 koodauksen toimivuus, kopioi koodaus yksinkertaisen html-koodauksen sisällösi ja tallenna php-tiedostoksi. Avaa www-palvelimelta ja tarkista XML-tiedoston sisältö. Muuta koodauksen sisältöä lisäämällä siihen Matematiikka, Ruotsi ja Englanti sekä edellisille kuvitteelliset pisteet. Tarkista tulos.
<?xml version="1.0" encoding="UTF-8"?> <juomat> <cola> sokeriton </cola> <mehu> appelsiini </mehu> <tee> minttu </tee> <kahvi> mokka </kahvi> </juomat>
Huomaa. Koodauksen alussa kerrotaan XML-versio ja valittu koodaukseksi UTF-8, joka kertoo koodauksessa mahdollisesti sisältävän skandinaavisia kirjaimia.
2. Tehtävä. Tallenna tyhjä juomat.xml tiedosto. Kopioi tehtävän 1 koodaus ja talleta se juomat.php nimiseksi. Muokkaa juomat.php kirjoittamaan 2.esimerkin mukainen sisältö tyhjään xml-tiedostoon. Tarkista tulos.3. Esimerkki, atribuuttina liittymispäivämäärä:
<?xml version="1.0" encoding="UTF-8"?> <lista liittynyt="1/04/2026"> <etunimi> Veijo </etunimi> <sukunimi> Vikkelä </sukunimi> </lista>
4. Esimerkki:
<?xml version="1.0" encoding="UTF-8"?> <lista> <liittynyt> "2026-9-12" </liittynyt> <etunimi> Veijo </etunimi> <sukunimi> Vikkelä </sukunimi> </lista>
5. Esimerkki, jossa on helpompi muuttaa päivämäärä-tiedot ohjelmallisesti:
<?xml version="1.0" encoding="UTF-8"?>
<lista>
<liittynyt>
<paiva> 9 </paiva>
<kuukausi> 12 </kuukausi>
<vuosi> 2026 </vuosi>
</liittynyt>
<etunimi> Veijo <
<sukunimi> Vikkelä </sukunimi>
</lista>
6.Esimerkki, kaksi atribuuttia, viesti&vastaus:
<viesti>
<tunniste id="501">
<kuka> Tove</kuka>
<kenelle> Jani </kenelle>
<otsikko> Muista </otsikko>
<teksti> Kokous tänään klo 12.30! </teksti>
</tunniste>
<tunniste id="502">
<kuka> Jani </kuka>
<kenelle> Tove </kenelle>
<otsikko> Re: Muista
<teksti> Tulen paikalle. </teksti>
</tunniste>
</viesti
Tehtävä 3. Toteuta internet-sivulla oleva PHP-lomake jolla voidaan kirjoittaa XML-tiedostoon.
Tehtävä 4. Toteuta PHP-lomake jolla voi toistuvasti kirjoittaa tietoja XML-tiedostoon, siten että uusi tieto lisätään edellisen jälkeen ja yksilöidään ID-koodilla.
Tehtävä 5. Toteuta koodaus jolla lomakkella annetun ID-koodin avulla haetaan ja näytetään XML-tiedostosta tietoa.
Tehtävä 6. Toteuta koodaus millä näytetään useita ID-koodin omaavia tietoja eli XML-tiedoston kokonaisuudessaan.