PHP XML-i õpetus: looge, sõeluge, lugege näitega
⚡ Nutikas kokkuvõte
PHP ja XML töötavad koos andmete struktureerimiseks, salvestamiseks ja süsteemidevaheliseks vahetamiseks. See käsiraamat selgitab XML-i, DOM-i ja XML-parsereid ning näitab seejärel, kuidas lugeda XML-dokumenti SimpleXML-i abil ja kuidas luua see DOMDocument-klassi abil, lõpetades sellega, millal neid kasutada.

Mis on XML?
XML on akronüüm sõnast Extensible Markup Language.
XML-i kasutatakse andmete struktureerimiseks, salvestamiseks ja ühest süsteemist teise transportimiseks.
XML sarnaneb HTML-iga. See kasutab avavaid ja sulgevaid silte. Erinevalt HTML-ist võimaldab XML kasutajatel oma silte defineerida.
Mis on DOM?
DOM on dokumendiobjekti mudeli akronüüm.
See on platvormideülene ja keeleneutraalne standard, mis määratleb, kuidas andmetele juurde pääseda ja neid töödelda:
- HTML
- XHTML
- XML
DOM XML-i kasutatakse XML-dokumentidele juurdepääsuks ja nendega manipuleerimiseks. See vaatab XML-dokumenti puustruktuurina.
XML-i parserid
XML-parser on programm, mis tõlgib XML-dokumendi XML-dokumendiobjektimudeli (DOM) objektiks.
XML DOM-objekti saab seejärel manipuleerida, kasutades Javaskript, Python, PHP ja teised programmeerimiskeeled.
Märksõna CDATA, mis on lühend ingliskeelsest terminist ((unparsed) Character Data) ja mida kasutatakse XML-dokumendi parsimisel erimärkide (nt „<” ja „>”) ignoreerimiseks.
Miks kasutada XML-i?
- Veebiteenused, näiteks SOAP ja REST, kasutavad teabe vahetamiseks XML-vormingut. XML-i olemuse ja toimimise tundmaõppimine annab arendajana konkurentsieelise, kuna tänapäevased rakendused kasutavad veebiteenuseid palju.
- XML-dokumente saab kasutada rakenduse konfiguratsiooniseadete salvestamiseks.
- See võimaldab teil luua oma kohandatud silte, mis muudab selle paindlikumaks.
XML-dokumendi näide
Oletame, et sa oled arendajaping rakendus, mis saab veebiteenusest andmeid XML-vormingus.
Allpool on näidis sellest, milline XML-dokument välja näeb.
<?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>
SIIN,
- „ „määrab kasutatava XML-versiooni ja kodeeringu”
- “ ” on juurelement.
- „ … „” on lapseelemendid, üks iga töötajakirje kohta.
Kuidas lugeda XML-i PHP-ga
Kirjutame nüüd koodi, mis loeb töötajate XML-dokumenti ja kuvab tulemused veebibrauseris. 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>'; } ?>
SIIN,
- „$xml = simplexml_load_file('employees.xml');” kasutab funktsiooni simplexml_load_file faili nimega employees.xml laadimiseks ja selle sisu määramiseks muutujale $xml.
- „$list = $xml->record;” hangib kirjesõlmede sisu.
- „for ($i = 0; $i < count(…)…“ on for-tsükkel, mis loeb massiivi ja väljastab tulemused
- "$loend[$i]->attributes()->man_no;" loeb elemendi man_no atribuuti
- "$list[$i]->nimi;" loeb nime alamelemendi väärtust
- "$list[$i]->positsioon;" loeb positsiooni alamelemendi väärtust
XML-lugeja testimine
Eeldades, et salvestasid faili index.php kausta phptuts/xml, sirvi sealt URL http://localhost/phptuts/xml/index.php
Kuidas luua PHP-ga XML-dokumenti
Nüüd vaatame, kuidas PHP abil XML-dokumenti luua.
Järgnev kood kasutab XML-dokumendi loomiseks PHP sisseehitatud klassi DOMDocument.
<?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"; ?>
SIIN,
- „$dom = new DOMDocument();” loob DOMDocument klassi eksemplari.
- "$dom->encoding = 'utf-8';" määrab dokumendi kodeeringuks utf-8
- "$dom->xmlVersion = '1.0';" määrab versiooni numbri 1.0
- "$dom->formatOutput = tõene;" tagab, et väljund on hästi vormindatud
- "$root = $dom->createElement('Movies');" loob juursõlme nimega Filmid
- „$attr_movie_id = new DOMAttr('movie_id', '5467');” määratleb filmisõlme atribuudi movie_id
- „$dom->createElement('ElementName', 'ElementValue')” loob tütarsõlme. ElementName määrab elemendi nime, nt Title. ElementValue määrab tütarsõlme väärtuse, nt The Campaign.
- „$root->appendChild($movie_node);” lisab filmisõlme juursõlmele Filmid
- "$dom-> appendChild($root);" lisab juursõlme XML-dokumendile.
- "$dom->save($xml_file_name);" salvestab XML-faili veebiserveri juurkataloogi.
- „echo „$xml_file_name on edukalt loodud”;” kuvab eduteate.
XML-i testimine Creator
Eeldades, et salvestasite faili create_movies_list.php kausta phptuts/xml, sirvige kausta URL http://localhost/phptuts/xml/create_movies_list.php
Ava fail movies_list.xml.
SimpleXML vs DOMDocument
PHP pakub XML-iga töötamiseks kahte peamist viisi. SimpleXML sobib kõige paremini siis, kui teil on peamiselt vaja andmeid lugeda, samas kui DOMDocument pakub täpsemat kontrolli dokumentide loomiseks ja ulatuslikuks redigeerimiseks. Allolev tabel võrdleb neid.
| Aspekt | SimpleXML | DOMDocument |
|---|---|---|
| Kasutusmugavus | Väga lihtne; dokument käitub nagu pesastatud objektid | Rohkem sõnastatud, sõlmepõhine API |
| Parim on | Lugemine ja kerge toimetamine | Dokumentide loomine ja keerukas manipuleerimine |
| Juurdepääsu stiil | $xml->kirje->nimi | createElement() ja appendChild() |
| XPath-tugi | Jah, läbi ->xpath() | Jah, DOMXPath klassi kaudu |
Praktiline reegel on kasutada esmalt SimpleXML-i kanalite ja lihtsate failide lugemiseks ning seejärel lülituda üle DOMDocument'ile, kui teil on vaja luua dokumente, lisada sõlmi kindlatele positsioonidele või valideerida neid skeemi alusel.



