PHP XML -opetusohjelma: Luo, jäsennä, lue esimerkin avulla
Mikä on XML?
XML on lyhenne sanoista Extensible Markup Language.
XML:ää käytetään tietojen jäsentämiseen, tallentamiseen ja siirtämiseen järjestelmästä toiseen.
XML on samanlainen kuin HTML.
Se käyttää avaus- ja sulkemistunnisteita.
Toisin kuin HTML, XML antaa käyttäjille mahdollisuuden määritellä omat tunnisteensa.
Mikä on DOM?
DOM on lyhenne sanoista Document Object Model.
Se on eri alustojen ja kielten välinen neutraali standardi, joka määrittelee, kuinka tietoja voidaan käyttää ja käsitellä.
- 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 kääntää XML-dokumentin XML-dokumenttiobjektimallin (DOM) objektiksi.
XML DOM -objektia voidaan sitten käsitellä käyttämällä Javakäsikirjoitus, Pythonja PHP jne.
Avainsanaa CDATA, joka on lyhenne sanoista (Unparsed) Character Data, käytetään ohittamaan erikoismerkit, kuten "<,>", kun jäsennetään XML-asiakirjaa.
Miksi käyttää XML:ää?
- Verkkopalvelut, kuten SOAP ja REST, käyttävät XML-muotoa tietojen vaihtamiseen. Kun opit, mitä XML on ja miten se toimii, saat kilpailuetua kehittäjänä, koska nykyaikaiset sovellukset käyttävät paljon verkkopalveluita.
- XML-dokumentteja voidaan käyttää sovelluksen kokoonpanoasetusten tallentamiseen
- Sen avulla voit luoda omia mukautettuja tunnisteita, jotka tekevät siitä joustavamman.
Esimerkki XML-asiakirjasta
Oletetaan, että olet kehittämässä sovellusta, joka hakee tietoja 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 hallinnon ja myynnin alielementtejä.
Kuinka lukea XML:ää PHP:llä
Kirjoita nyt koodi, joka lukee työntekijöiden 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('työntekijät.xml');" käyttää simplexml_load_file-funktiota tiedostonimen työntekijät.xml lataamiseen ja sisällön määrittämiseen taulukkomuuttujalle $xml.
- "$lista = $xml->tietue;" saa tietuesolmun sisällön.
- "for ($i = 0; $i < count(…)…" on for-silmukka, joka lukee numeerisen taulukon ja tulostaa 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
Testaamme sovellustamme
Jos olet tallentanut tiedoston index.php phptus/xml-kansioon, selaa URL-osoitteeseen http://localhost/phptuts/xml/index.php
Kuinka luoda XML-dokumentti PHP:llä
Katsomme nyt, kuinka luodaan XML-dokumentti PHP:llä.
Käytämme yllä olevaa esimerkkiä DOM-puukaaviossa.
Seuraava koodi käyttää sisäänrakennettua PHP:tä luokan DOMDocument luomaan XML-dokumentin.
<?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', 'The Campaign'); $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 = uusi DOMDocument();" luo DOMDocument-luokan esiintymän.
- "$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ää Movies-solmun movie id -attribuutin
- "$child_node_element_name = $dom->createElement('ElementName', 'ElementValue')" luo Movies-solmun alisolmun. ElementName määrittää elementin nimen, esim. Title. ElementValue asettaa alisolmun arvon, esim. The Campaign.
- "$root->appendChild($movie_node);" liittää movie_node-elementit juurisolmuun Movies
- "$dom->appendChild($root);" liittää juurisolmun XML-dokumenttiin.
- "$dom->tallenna($xml_tiedoston_nimi);" tallentaa XML-tiedoston verkkopalvelimen juurihakemistoon.
- "kaiku " $xml_tiedoston_nimi . ' on luotu onnistuneesti';" luo linkin XML-tiedostoon.
Testaamme sovellustamme
Jos olet tallentanut tiedoston create_movies_list phptuts/xml-kansioon, selaa URL-osoitteeseen http://localhost/phptuts/xml/create_movies_list.php
Napsauta movies_list_xml-linkkiä
Yhteenveto
- XML on lyhenne sanoista Extensible Markup Language
- XML:ää voidaan käyttää tiedon vaihtamiseen järjestelmien välillä tai tallentaa sovelluksen konfigurointiasetuksia jne.
- DOM on lyhenne sanoista Document Object Model. XML DOM näyttää XML-dokumentin puurakenteena
- XML Parser on ohjelma, joka kääntää XML-dokumentin DOM-puurakenteen kaltaiseksi asiakirjaksi.
- CDATAa käytetään erikoismerkkien huomiotta jättämiseen XML-dokumentteja jäsennettäessä.
- PHP käyttää simplexml_load_file-tiedostoa XML-dokumenttien lukemiseen ja tulosten palauttamiseen numeerisena taulukkona
- PHP DOMDocument-luokka XML-tiedostojen luomiseen.