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 XML är: XML är Extensible Markup Language, ett taggbaserat format som låter dig definiera anpassade taggar för att strukturera och transportera data.
  • ???? DOM:n: Dokumentobjektmodellen visar ett XML- eller HTML-dokument som ett träd, så att kod kan navigera och redigera noder.
  • 🔄 XML-parsare: En parser konverterar ett XML-dokument till ett DOM-objekt som PHP, JavaManus, eller Python kan läsa och ändra.
  • ???? Läser XML: simplexml_load_file laddar en fil i objekt, så att du kommer åt poster med pilsyntax som $xml->record->name.
  • 🛠️ Skapa XML: DOMDocument-klassen bygger ett dokument nod för nod med createElement och appendChild, och skriver sedan filen vid sparning.
  • ⚖️ SimpleXML kontra DOM: SimpleXML är snabb att läsa, medan DOMDocument passar för exakt skapande och komplex manipulation.
  • 🤖 AI Assist: AI-verktyg kan generera parsningskod för en specifik XML-struktur och konvertera mellan XML-, JSON- och PHP-arrayer.

PHP och XML

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

Läs XML med 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

Skapa ett XML-dokument med PHP

Öppna filen movies_list.xml.

Skapa ett XML-dokument med PHP

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.

Vanliga frågor

Båda lagrar strukturerad data, men XML använder taggar och stöder attribut, kommentarer och scheman, medan JSON är lättare och mappar direkt till arrayer och objekt. JSON är vanligt för API:er; XML passar för dokument och konfiguration.

Ladda filen med SimpleXML eller DOMDocument, ändra nodvärdena eller attributen och skriv sedan tillbaka den. Med SimpleXML, redigera egenskapen och anropa asXML('file.xml'); med DOMDocument, redigera noden och anropa save().

XPath är ett frågespråk för att välja noder i ett XML-dokument. I PHP, anropa $xml->xpath('//record/name') med SimpleXML, eller använd DOMXPath-klassen, för att hämta matchande element utan att behöva leta.ping genom hela trädet.

Ja. AI kan generera kod med hjälp av simplexml_load_string, json_encode och json_decode för att konvertera mellan formaten och flagga data som inte mappas tydligt, till exempel XML-attribut eller blandat innehåll. Verifiera resultatet.

Ja. Klistra in ett exempel på din XML, så kan AI producera SimpleXML- eller DOMDocument-kod som läser exakt de element och attribut du behöver, inklusive loopar för upprepade poster. Testa det mot riktiga filer.

Sammanfatta detta inlägg med: