PHP XML -opetusohjelma: Luo, jäsennä, lue esimerkin avulla
⚡ Älykäs yhteenveto
PHP ja XML toimivat yhdessä tiedon jäsentämiseksi, tallentamiseksi ja vaihtamiseksi järjestelmien välillä. Tämä ohje selittää XML:n, DOM:n ja XML-jäsentimet ja näyttää sitten, miten XML-dokumenttia luetaan SimpleXML:llä ja miten sellainen luodaan DOMDocument-luokan avulla, sekä milloin kutakin käytetään.

Mikä on XML?
XML on lyhenne sanoista Extensible Markup Language.
XML:ää käytetään tiedon jäsentämiseen, tallentamiseen ja siirtämiseen järjestelmästä toiseen.
XML on samankaltainen kuin HTML. Se käyttää avaus- ja lopputageja. Toisin kuin HTML, XML antaa käyttäjien määritellä omat taginsa.
Mikä on DOM?
DOM on lyhenne sanoista Document Object Model.
Se on alustojen välinen ja kielineutraali standardi, joka määrittelee, miten dataa voi käyttää ja käsitellä seuraavissa tilanteissa:
- HTML
- XHTML
- XML
DOM XML:ää käytetään XML-dokumenttien avaamiseen ja käsittelemiseen. Se näyttää XML-dokumentin puurakenteena.
XML-jäsennykset
XML-jäsennin on ohjelma, joka muuntaa XML-dokumentin XML Document Object Model (DOM) -objektiksi.
XML DOM -objektia voidaan sitten käsitellä käyttämällä Javakäsikirjoitus, Python, PHP ja muut kielet.
Avainsanaa CDATA, joka on lyhenne sanoista (unparsed) Character Data, käytetään jättämään huomiotta erikoismerkit, kuten "<" ja ">", XML-dokumenttia jäsennettäessä.
Miksi käyttää XML:ää?
- Verkkopalvelut, kuten SOAP ja REST, käyttävät XML-muotoa tiedonvaihtoon. XML:n ja sen toiminnan oppiminen antaa sinulle kilpailuedun kehittäjänä, koska nykyaikaiset sovellukset hyödyntävät paljon verkkopalveluita.
- XML-dokumentteja voidaan käyttää sovelluksen määritysasetusten tallentamiseen.
- Sen avulla voit luoda omia mukautettuja tunnisteita, mikä tekee siitä joustavamman.
Esimerkki XML-asiakirjasta
Oletetaan, että olet kehittynytping sovellus, joka hakee dataa verkkopalvelusta XML-muodossa.
Alla on esimerkki siitä, miltä XML-dokumentti näyttää.
<?xml version="1.0" encoding="utf-8"?> <employees status = "ok"> <record man_no = "101"> <name>Joe Paul</name> <position>CEO</position> </record> <record man_no = "102"> <name>Tasha Smith</name> <position>Finance Manager</position> </record> </employees>
TÄSSÄ,
- ” ” määrittää käytettävän XML-version ja koodauksen
- " ” on juurielementti.
- ” … ” ovat alielementtejä, yksi työntekijätietuetta kohden.
Kuinka lukea XML:ää PHP:llä
Kirjoitetaan nyt koodi, joka lukee työntekijän XML-dokumentin ja näyttää tulokset verkkoselaimessa. index.php
<?php $xml = simplexml_load_file('employees.xml'); echo '<h2>Employees Listing</h2>'; $list = $xml->record; for ($i = 0; $i < count($list); $i++) { echo '<b>Man no:</b> ' . $list[$i]->attributes()->man_no . '<br>'; echo 'Name: ' . $list[$i]->name . '<br>'; echo 'Position: ' . $list[$i]->position . '<br><br>'; } ?>
TÄSSÄ,
- ”$xml = simplexml_load_file('employees.xml');” lataa tiedoston employees.xml simplexml_load_file-funktion avulla ja sijoittaa sen sisällön muuttujaan $xml.
- “$list = $xml->record;” hakee tietuenosoodujen sisällön.
- ”for ($i = 0; $i < count(…)…” on for-silmukka, joka lukee taulukon ja näyttää tulokset
- "$list[$i]->attributes()->man_no;" lukee elementin man_no-attribuutin
- "$list[$i]->nimi;" lukee nimen lapsielementin arvon
- "$list[$i]->position;" lukee sijainnin lapsielementin arvon
XML-lukijan testaaminen
Olettaen, että tallensit tiedoston index.php phptuts/xml-kansioon, selaa kohtaan URL http://localhost/phptuts/xml/index.php
Kuinka luoda XML-dokumentti PHP:llä
Katsomme nyt, kuinka luodaan XML-dokumentti PHP:llä.
Seuraava koodi käyttää PHP:n sisäänrakennettua DOMDocument-luokkaa XML-dokumentin luomiseen.
<?php $dom = new DOMDocument(); $dom->encoding = 'utf-8'; $dom->xmlVersion = '1.0'; $dom->formatOutput = true; $xml_file_name = 'movies_list.xml'; $root = $dom->createElement('Movies'); $movie_node = $dom->createElement('movie'); $attr_movie_id = new DOMAttr('movie_id', '5467'); $movie_node->setAttributeNode($attr_movie_id); $child_node_title = $dom->createElement('Title', 'The Campaign'); $movie_node->appendChild($child_node_title); $child_node_year = $dom->createElement('Year', 2012); $movie_node->appendChild($child_node_year); $child_node_genre = $dom->createElement('Genre', 'Comedy'); $movie_node->appendChild($child_node_genre); $child_node_ratings = $dom->createElement('Ratings', 6.2); $movie_node->appendChild($child_node_ratings); $root->appendChild($movie_node); $dom->appendChild($root); $dom->save($xml_file_name); echo "$xml_file_name has been successfully created"; ?>
TÄSSÄ,
- ”$dom = new DOMDocument();” luo DOMDocument-luokan instanssin.
- "$dom->encoding = 'utf-8';" asettaa asiakirjan koodaukseksi utf-8
- "$dom->xmlVersion = '1.0';" määrittää versionumeron 1.0
- "$dom->formatOutput = tosi;" varmistaa, että tuloste on muotoiltu hyvin
- "$root = $dom->createElement('Movies');" luo juurisolmun nimeltä Elokuvat
- ”$attr_movie_id = new DOMAttr('movie_id', '5467');” määrittää elokuvasolmun movie_id-attribuutin
- ”$dom->createElement('ElementName', 'ElementValue')” luo lapsisolmun. ElementName määrittää elementin nimen, esim. Title. ElementValue asettaa lapsisolmun arvon, esim. The Campaign.
- “$root->appendChild($movie_node);” liittää elokuvasolmun juurisolmuun Elokuvat
- "$dom->appendChild($root);" liittää juurisolmun XML-dokumenttiin.
- "$dom->tallenna($xml_tiedoston_nimi);" tallentaa XML-tiedoston verkkopalvelimen juurihakemistoon.
- “echo “$xml_file_name on luotu onnistuneesti”;” näyttää onnistumisviestin.
XML:n testaaminen Creator
Olettaen, että tallensit tiedoston create_movies_list.php phptuts/xml-kansioon, selaa kohtaan URL http://localhost/phptuts/xml/create_movies_list.php
Avaa movies_list.xml-tiedosto.
SimpleXML vs. DOMDocument
PHP tarjoaa kaksi päätapaa työskennellä XML:n kanssa. SimpleXML on paras vaihtoehto, kun pääasiassa tarvitsee lukea dataa, kun taas DOMDocument tarjoaa tarkemman hallinnan dokumenttien rakentamiseen ja laajaan muokkaamiseen. Alla oleva taulukko vertailee niitä.
| Aspect | SimpleXML | DOMDocument |
|---|---|---|
| Helppokäyttöisyys | Hyvin yksinkertainen; dokumentti käyttäytyy kuin sisäkkäiset objektit | Runsaslukuisempi, solmupohjainen API |
| Parasta | Lukeminen ja kevyt editointi | Asiakirjojen luominen ja monimutkainen käsittely |
| Access-tyyli | $xml->tietue->nimi | createElement() ja appendChild() |
| XPath-tuki | Kyllä, ->xpath():n kautta | Kyllä, DOMXPath-luokan kautta |
Käytännön sääntö on käyttää ensin SimpleXML:ää syötteiden ja yksinkertaisten tiedostojen lukemiseen ja siirtyä DOMDocumentiin, kun sinun on luotava dokumentteja, lisättävä solmuja tiettyihin kohtiin tai validoitava niitä skeemaa vasten.



