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 laiendatav märgistuskeel, siltidel põhinev vorming, mis võimaldab teil andmete struktureerimiseks ja edastamiseks määrata kohandatud silte.
  • 🌳 DOM: Dokumendiobjekti mudel (Document Object Model) käsitleb XML- või HTML-dokumenti puuna, seega saab kood sõlmi navigeerida ja muuta.
  • 🔄 XML-parsijad: Parser teisendab XML-dokumendi DOM-objektiks, mida PHP JavaSkript või Python oskab lugeda ja muuta.
  • ???? XML-i lugemine: simplexml_load_file laadib faili objektidesse, seega pääsete kirjetele ligi noolesüntaksiga, näiteks $xml->record->name.
  • 🛠️ XML-i loomine: Klass DOMDocument loob dokumendi sõlme haaval, kasutades createElement ja appendChild elemente, ning seejärel kirjutab save faili.
  • 🇧🇷 SimpleXML vs DOM: SimpleXML on kiire lugemiseks, samas kui DOMDocument sobib täpseks loomiseks ja keerukaks manipuleerimiseks.
  • 🤖 Tehisintellekti abi: Tehisintellekti tööriistad saavad genereerida parsimiskoodi konkreetse XML-struktuuri jaoks ja teisendada XML-, JSON- ja PHP-massiivide vahel.

PHP ja XML

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

Loe XML-i PHP-ga

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

Looge PHP-ga XML-dokument

Ava fail movies_list.xml.

Looge PHP-ga XML-dokument

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.

KKK

Mõlemad salvestavad struktureeritud andmeid, kuid XML kasutab silte ning toetab atribuute, kommentaare ja skeeme, samas kui JSON on kergem ja seob need otse massiivide ja objektidega. JSON on levinud API-de puhul; XML sobib dokumentide ja konfiguratsiooni jaoks.

Laadi fail SimpleXML-i või DOMDocument-iga, muuda sõlme väärtusi või atribuute ja seejärel kirjuta see tagasi. SimpleXML-i puhul muuda omadust ja kutsu välja asXML('file.xml'); DOMDocument-i puhul muuda sõlme ja kutsu välja save().

XPath on päringukeel XML-dokumendis sõlmede valimiseks. PHP-s kutsuge SimpleXML-iga välja $xml->xpath('//record/name') või kasutage DOMXPath klassi, et leida sobivaid elemente ilma igasuguste otsimisteta.ping läbi kogu puu.

Jah. Tehisintellekt saab genereerida koodi, kasutades simplexml_load_string, json_encode ja json_decode funktsioone, et teisendada vorme ja märkida andmeid, mis ei vasta selgelt nõuetele, näiteks XML-atribuute või segatud sisu. Kontrollige tulemust.

Jah. Kleebi oma XML-näidis ja tehisintellekt suudab luua SimpleXML- või DOM-dokument-koodi, mis loeb täpselt vajalikke elemente ja atribuute, sealhulgas korduvate kirjete tsükleid. Testi seda päris failide vastu.

Võta see postitus kokku järgmiselt: