PHP XML Tutorial: Opret, parse, læs med eksempel

⚡ Smart opsummering

PHP og XML arbejder sammen om at strukturere, lagre og udveksle data mellem systemer. Denne gennemgang forklarer XML, DOM og XML-parsere, viser derefter, hvordan man læser et XML-dokument med SimpleXML, og hvordan man opretter et med DOMDocument-klassen, og slutter af med, hvornår man skal bruge hver af dem.

  • 📄 Hvad XML er: XML er Extensible Markup Language, et tagbaseret format, der giver dig mulighed for at definere brugerdefinerede tags til at strukturere og transportere data.
  • ???? DOM: Dokumentobjektmodellen ser et XML- eller HTML-dokument som et træ, så kode kan navigere i og redigere noder.
  • 🔄 XML-parsere: En parser konverterer et XML-dokument til et DOM-objekt, som PHP, JavaScript, eller Python kan læse og ændre.
  • ???? Læsning af XML: simplexml_load_file indlæser en fil i objekter, så du tilgår poster med pilesyntaks som $xml->record->name.
  • 🛠️ Oprettelse af XML: DOMDocument-klassen opbygger et dokument, node for node, med createElement og appendChild, og skriver derefter filen ved at gemme.
  • ⚖️ SimpleXML vs. DOM: SimpleXML er hurtig at læse, mens DOMDocument er egnet til præcis oprettelse og kompleks manipulation.
  • 🤖 AI Assist: AI-værktøjer kan generere parsingkode til en specifik XML-struktur og konvertere mellem XML-, JSON- og PHP-arrays.

PHP og XML

Hvad er XML?

XML er forkortelsen for Extensible Markup Language.

XML bruges til at strukturere, gemme og transportere data fra ét system til et andet.

XML minder om HTML. Det bruger åbne- og lukketags. I modsætning til HTML giver XML brugerne mulighed for at definere deres egne tags.

Hvad er DOM?

DOM er forkortelsen for Document Object Model.

Det er en tværplatforms- og sprogneutral standard, der definerer, hvordan man tilgår og manipulerer data i:

  • HTML
  • XHTML
  • XML

DOM XML bruges til at få adgang til og manipulere XML-dokumenter. Det ser XML-dokumentet som en træstruktur.

XML-parsere

En XML-parser er et program, der oversætter XML-dokumentet til et XML Document Object Model (DOM)-objekt.

XML DOM-objektet kan derefter manipuleres ved hjælp af Javamanuskript, Python, PHP og andre sprog.

Nøgleordet CDATA, som er et akronym for (unparsed) Character Data ((ikke-parsede) tegndata), bruges til at ignorere specialtegn som "<" og ">", når et XML-dokument parses.

Hvorfor bruge XML?

  • Webtjenester som SOAP og REST bruger XML-formatet til at udveksle information. At lære, hvad XML er, og hvordan det fungerer, giver dig en konkurrencefordel som udvikler, da moderne applikationer i høj grad bruger webtjenester.
  • XML-dokumenter kan bruges til at gemme konfigurationsindstillingerne for et program.
  • Det giver dig mulighed for at oprette dine egne brugerdefinerede tags, hvilket gør det mere fleksibelt.

Eksempel på XML-dokument

Lad os antage, at du er udvikletping en applikation, der henter data fra en webtjeneste i XML-format.

Nedenfor er et eksempel på, hvordan XML-dokumentet ser ud.

<?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>

HER,

  • " "angiver den XML-version og kodning, der skal bruges
  • “ ” er rodelementet.
  • " … " er de underordnede elementer, ét pr. medarbejderpost.

Sådan læser du XML ved hjælp af PHP

Lad os nu skrive den kode, der læser medarbejdernes XML-dokument og viser resultaterne i en webbrowser. 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>';
}
?>

HER,

  • "$xml = simplexml_load_file('employees.xml');" bruger funktionen simplexml_load_file til at indlæse filen med navnet employees.xml og tildele indholdet til variablen $xml.
  • "$list = $xml->record;" henter indholdet af record-noderne.
  • "for ($i = 0; $i < count(…)..." er for-løkken, der læser arrayet og udskriver resultaterne
  • "$list[$i]->attributes()->man_no;" læser man_no-attributten for elementet
  • "$list[$i]->navn;" læser værdien af ​​navnet underordnet element
  • "$list[$i]->position;" læser værdien af ​​positionsunderelementet

Test af XML-læseren

Hvis du har gemt filen index.php i mappen phptuts/xml, skal du gå til URL http://localhost/phptuts/xml/index.php

Læs XML ved hjælp af PHP

Sådan opretter du et XML-dokument ved hjælp af PHP

Vi vil nu se på, hvordan man opretter et XML-dokument ved hjælp af PHP.

Følgende kode bruger den indbyggede PHP-klasse DOMDocument til at oprette et XML-dokument.

<?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";
?>

HER,

  • "$dom = new DOMDocument();" opretter en instans af DOMDocument-klassen.
  • "$dom->encoding = 'utf-8';" indstiller dokumentkodningen til utf-8
  • "$dom->xmlVersion = '1.0';" angiver versionsnummer 1.0
  • "$dom->formatOutput = sand;" sikrer, at outputtet er godt formateret
  • "$root = $dom->createElement('Film');" opretter rodnoden med navnet Movies
  • "$attr_movie_id = new DOMAttr('movie_id', '5467');" definerer movie_id-attributten for filmnoden.
  • "$dom->createElement('ElementName', 'ElementValue')" opretter en underordnet node. ElementName angiver navnet på elementet, f.eks. Titel. ElementValue angiver værdien for underordnet node, f.eks. Kampagnen.
  • "$root->appendChild($movie_node);" tilføjer filmnoden til rodnoden Film
  • "$dom->appendChild($root);" føjer rodnoden til XML-dokumentet.
  • "$dom->save($xml_file_name);" gemmer XML-filen i rodmappen på webserveren.
  • "echo "$xml_file_name er blevet oprettet";" viser en succesmeddelelse.

Test af XML'en Creator

Hvis du har gemt filen create_movies_list.php i mappen phptuts/xml, skal du gå til URL http://localhost/phptuts/xml/create_movies_list.php

Opret et XML-dokument ved hjælp af PHP

Åbn filen movies_list.xml.

Opret et XML-dokument ved hjælp af PHP

SimpleXML vs. DOMDocument

PHP tilbyder to primære måder at arbejde med XML på. SimpleXML er bedst, når du primært har brug for at læse data, mens DOMDocument giver finere kontrol til at opbygge og redigere dokumenter i store mængder. Tabellen nedenfor sammenligner dem.

Aspect SimpleXML DOM-dokument
Brugervenlighed Meget simpelt; dokumentet opfører sig som indbyggede objekter Mere detaljeret, nodebaseret API
Bedste for Læsning og lysredigering Oprettelse af dokumenter og kompleks manipulation
Adgangsstil $xml->post->navn createElement() og appendChild()
XPath-understøttelse Ja, via ->xpath() Ja, via DOMXPath-klassen

En praktisk regel er først at bruge SimpleXML til at læse feeds og simple filer, og derefter skifte til DOMDocument, når du skal oprette dokumenter, indsætte noder på bestemte positioner eller validere mod et skema.

Ofte Stillede Spørgsmål

Begge gemmer strukturerede data, men XML bruger tags og understøtter attributter, kommentarer og skemaer, mens JSON er lettere og knytter sig direkte til arrays og objekter. JSON er almindeligt for API'er; XML er egnet til dokumenter og konfiguration.

Indlæs filen med SimpleXML eller DOMDocument, rediger nodeværdierne eller attributterne, og skriv den derefter tilbage. Med SimpleXML skal du redigere egenskaben og kalde asXML('file.xml'); med DOMDocument skal du redigere noden og kalde save().

XPath er et forespørgselssprog til at vælge noder i et XML-dokument. I PHP kan du kalde $xml->xpath('//record/name') med SimpleXML, eller bruge DOMXPath-klassen til at hente matchende elementer uden at skulle søge.ping gennem hele træet.

Ja. AI kan generere kode ved hjælp af simplexml_load_string, json_encode og json_decode til at konvertere mellem formaterne og markere data, der ikke mappes korrekt, såsom XML-attributter eller blandet indhold. Bekræft resultatet.

Ja. Indsæt en prøve af din XML, så kan AI producere SimpleXML- eller DOMDocument-kode, der læser præcis de elementer og attributter, du har brug for, inklusive løkker til gentagne poster. Test det mod rigtige filer.

Opsummer dette indlæg med: