PHP XML-handledning: Skapa, analysera, läs med exempel
⚡ Smart sammanfattning
PHP och XML samarbetar för att strukturera, lagra och utbyta data mellan system. Den här genomgången förklarar XML, DOM och XML-parsers, visar sedan hur man läser ett XML-dokument med SimpleXML och hur man skapar ett med DOMDocument-klassen, och avslutar med när man ska använda varje dokument.

Vad är XML?
XML är förkortningen för Extensible Markup Language.
XML används för att strukturera, lagra och transportera data från ett system till ett annat.
XML liknar HTML. Det använder inledande och avslutande taggar. Till skillnad från HTML tillåter XML användare att definiera sina egna taggar.
Vad är DOM?
DOM är akronymen för Document Object Model.
Det är en plattformsoberoende och språkneutral standard som definierar hur man får åtkomst till och manipulerar data i:
- html
- XHTML
- XML
DOM XML används för att komma åt och manipulera XML-dokument. Det visar XML-dokumentet som en trädstruktur.
XML-tolkare
En XML-parser är ett program som översätter XML-dokumentet till ett XML Document Object Model (DOM)-objekt.
XML DOM-objektet kan sedan manipuleras med hjälp av JavaManus, Python, PHP och andra språk.
Nyckelordet CDATA, som är en förkortning för (oanalyserade) teckendata, används för att ignorera specialtecken som "<" och ">" vid parsning av ett XML-dokument.
Varför använda XML?
- Webbtjänster som SOAP och REST använder XML-formatet för att utbyta information. Att lära sig vad XML är och hur det fungerar ger dig en konkurrensfördel som utvecklare, eftersom moderna applikationer i stor utsträckning använder webbtjänster.
- XML-dokument kan användas för att lagra konfigurationsinställningarna för en applikation.
- Det låter dig skapa dina egna anpassade taggar, vilket gör det mer flexibelt.
Exempel på XML-dokument
Låt oss anta att du utvecklarping en applikation som hämtar data från en webbtjänst i XML-format.
Nedan visas ett exempel på hur XML-dokumentet ser ut.
<?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>
HÄR,
- " ” anger vilken XML-version och kodning som ska användas
- " ” är rotelementet.
- " … ” är underelementen, ett per medarbetarpost.
Hur man läser XML med PHP
Låt oss nu skriva koden som läser anställdas XML-dokument och visar resultaten i en webbläsare. 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>'; } ?>
HÄR,
- "$xml = simplexml_load_file('employees.xml');" använder funktionen simplexml_load_file för att läsa in filen med namnet employees.xml och tilldela innehållet till variabeln $xml.
- "$list = $xml->record;" hämtar innehållet i postnoderna.
- "for ($i = 0; $i < count(…)..." är for-loopen som läser arrayen och matar ut resultaten
- "$list[$i]->attributes()->man_no;" läser man_no-attributet för elementet
- "$list[$i]->namn;" läser värdet av elementet namn underordnade
- "$list[$i]->position;" läser av värdet på positionsunderelementet
Testa XML-läsaren
Om du antar att du sparade filen index.php i mappen phptuts/xml, bläddra till URL http://localhost/phptuts/xml/index.php
Hur man skapar ett XML-dokument med PHP
Vi ska nu titta på hur man skapar ett XML-dokument med PHP.
Följande kod använder den inbyggda PHP-klassen DOMDocument för att skapa ett 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"; ?>
HÄR,
- "$dom = new DOMDocument();" skapar en instans av DOMDocument-klassen.
- "$dom->encoding = 'utf-8';" ställer in dokumentkodningen till utf-8
- “$dom->xmlVersion = '1.0';” anger versionsnumret 1.0
- "$dom->formatOutput = sant;" säkerställer att utgången är välformaterad
- "$root = $dom->createElement('Filmer');" skapar rotnoden med namnet Filmer
- "$attr_movie_id = new DOMAttr('movie_id', '5467');" definierar attributet movie_id för filmnoden.
- "$dom->createElement('ElementName', 'ElementValue')" skapar en underordnad nod. ElementName anger namnet på elementet, t.ex. Titel. ElementValue anger värdet för underordnad nod, t.ex. Kampanjen.
- "$root->appendChild($movie_node);" lägger till filmnoden till rotnoden Filmer
- "$dom->appendChild($root);" lägger till rotnoden till XML-dokumentet.
- "$dom->save($xml_file_name);" sparar XML-filen i rotkatalogen på webbservern.
- “echo “$xml_file_name has been successfully created”;” visar ett meddelande om att programmet lyckades.
Testa XML-koden Creator
Om du antar att du sparade filen create_movies_list.php i mappen phptuts/xml, bläddra till URL http://localhost/phptuts/xml/create_movies_list.php
Öppna filen movies_list.xml.
SimpleXML kontra DOMDocument
PHP erbjuder två huvudsakliga sätt att arbeta med XML. SimpleXML är bäst när du huvudsakligen behöver läsa data, medan DOMDocument ger finare kontroll för att bygga och redigera dokument i stor utsträckning. Tabellen nedan jämför dem.
| Aspect | SimpleXML | DOM-dokument |
|---|---|---|
| Användarvänlighet | Mycket enkelt; dokumentet beter sig som kapslade objekt | Mer utförligt, nodbaserat API |
| Bäst för | Läsning och ljusredigering | Skapa dokument och komplex hantering |
| Åtkomststil | $xml->post->namn | createElement() och appendChild() |
| XPath-stöd | Ja, via ->xpath() | Ja, via DOMXPath-klassen |
En praktisk regel är att först använda SimpleXML för att läsa flöden och enkla filer, och sedan byta till DOMDocument när du behöver skapa dokument, infoga noder på specifika positioner eller validera mot ett schema.



