PHP XML-tutorial: creƫren, parseren, lezen met voorbeeld

⚔ Slimme samenvatting

PHP en XML werken samen om gegevens tussen systemen te structureren, op te slaan en uit te wisselen. Deze handleiding legt XML, de DOM en XML-parsers uit, laat zien hoe je een XML-document leest met SimpleXML en hoe je er een maakt met de DOMDocument-klasse, en sluit af met een uitleg over wanneer je welke methode moet gebruiken.

  • šŸ“„ Wat XML is: XML staat voor Extensible Markup Language, een op tags gebaseerd formaat waarmee je aangepaste tags kunt definiĆ«ren om gegevens te structureren en te transporteren.
  • ???? De DOM: Het Document Object Model (DOM) beschouwt een XML- of HTML-document als een boomstructuur, waardoor code door de knooppunten kan navigeren en deze kan bewerken.
  • šŸ”„ XML-parsers: Een parser zet een XML-document om in een DOM-object dat PHP kan verwerken. JavaScript, of Python Kan lezen en wijzigen.
  • ???? XML lezen: simplexml_load_file laadt een bestand in objecten, zodat je records kunt benaderen met pijlsyntaxis zoals $xml->record->name.
  • ļø XML maken: De DOMDocument-klasse bouwt een document knooppunt voor knooppunt op met behulp van createElement en appendChild, waarna save het bestand wegschrijft.
  • ​ SimpleXML versus DOM: SimpleXML is snel te lezen, terwijl DOMDocument geschikt is voor nauwkeurige creatie en complexe manipulatie.
  • šŸ¤– AI-assistentie: AI-tools kunnen parseercode genereren voor een specifieke XML-structuur en converteren tussen XML, JSON en PHP-arrays.

PHP en XML

Wat is XML?

XML is de afkorting voor Extensible Markup Language.

XML wordt gebruikt om gegevens te structureren, op te slaan en van het ene systeem naar het andere te transporteren.

XML lijkt op HTML. Het maakt gebruik van openings- en sluitingslabels. In tegenstelling tot HTML kunnen gebruikers in XML hun eigen labels definiƫren.

Wat is DOM?

DOM is de afkorting voor Document Object Model.

Het is een platformonafhankelijke en taalneutrale standaard die definieert hoe gegevens in de volgende contexten kunnen worden benaderd en bewerkt:

  • HTML
  • XHTML
  • XML

DOM XML wordt gebruikt om XML-documenten te openen en te manipuleren. Het bekijkt het XML-document als een boomstructuur.

XML-parsers

Een XML-parser is een programma dat een XML-document vertaalt naar een XML Document Object Model (DOM)-object.

Het XML DOM-object kan vervolgens worden gemanipuleerd met behulp van Javascript, Python, PHP en andere talen.

Het sleutelwoord CDATA, een acroniem voor (ongeparseerde) tekengegevens, wordt gebruikt om speciale tekens zoals "<" en ">" te negeren bij het parsen van een XML-document.

Waarom XML gebruiken?

  • Webdiensten zoals SOAP en REST gebruiken het XML-formaat om informatie uit te wisselen. Kennis van XML en de werking ervan geeft je als ontwikkelaar een concurrentievoordeel, aangezien moderne applicaties veelvuldig gebruikmaken van webdiensten.
  • XML-documenten kunnen worden gebruikt om de configuratie-instellingen van een applicatie op te slaan.
  • Het stelt je in staat om je eigen aangepaste tags te creĆ«ren, wat het flexibeler maakt.

XML-documentvoorbeeld

Laten we aannemen dat u aan het ontwikkelen bent.ping Een applicatie die gegevens in XML-formaat ophaalt van een webservice.

Hieronder ziet u een voorbeeld van hoe het XML-document eruitziet.

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

HIER,

  • ā€œ " geeft de te gebruiken XML-versie en -codering aan.
  • ā€œ ' is het basiselement.
  • ā€œ … ā€ zijn de onderliggende elementen, ƩƩn per werknemersdossier.

Hoe XML te lezen met PHP

Laten we nu de code schrijven die het XML-document met de werknemersgegevens leest en de resultaten in een webbrowser weergeeft. 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>';
}
?>

HIER,

  • ā€œ$xml = simplexml_load_file('employees.xml');ā€ gebruikt de functie simplexml_load_file om het bestand met de naam employees.xml te laden en de inhoud ervan toe te wijzen aan de variabele $xml.
  • ā€œ$list = $xml->record;ā€ haalt de inhoud van de recordknooppunten op.
  • ā€œfor ($i = 0; $i < count(…)ā€¦ā€ is de for-lus die de array leest en de resultaten uitvoert.
  • ā€œ$list[$i]->attributen()->man_no;ā€ leest het man_no attribuut van het element
  • ā€œ$lijst[$i]->naam;ā€ leest de waarde van het naam-kindelement
  • ā€œ$lijst[$i]->positie;ā€ leest de waarde van het onderliggende positie-element

De XML-lezer testen

Als je het bestand index.php in de map phptuts/xml hebt opgeslagen, ga dan naar de betreffende map. URL http://localhost/phptuts/xml/index.php

XML lezen met PHP

Hoe u een XML-document maakt met behulp van PHP

We zullen nu bekijken hoe u een XML-document kunt maken met behulp van PHP.

De volgende code gebruikt de ingebouwde PHP-klasse DOMDocument om een ​​XML-document te maken.

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

HIER,

  • ā€œ$dom = new DOMDocument();ā€ maakt een instantie van de DOMDocument-klasse aan.
  • ā€œ$dom->codering = 'utf-8';ā€ stelt de documentcodering in op utf-8
  • ā€œ$dom->xmlVersion = '1.0';ā€ specificeert het versienummer 1.0
  • ā€œ$dom->formatOutput = waar;ā€ zorgt ervoor dat de uitvoer goed is opgemaakt
  • ā€œ$root = $dom->createElement('Films');ā€ maakt het hoofdknooppunt met de naam Films
  • ā€œ$attr_movie_id = new DOMAttr('movie_id', '5467');ā€ definieert het attribuut movie_id van het filmknooppunt.
  • ā€œ$dom->createElement('ElementName', 'ElementValue')ā€ maakt een kindknooppunt aan. ElementName specificeert de naam van het element, bijvoorbeeld Titel. ElementValue stelt de waarde van het kindknooppunt in, bijvoorbeeld De Campagne.
  • ā€œ$root->appendChild($movie_node);ā€ voegt het filmknooppunt toe aan het hoofdknooppunt Movies.
  • ā€œ$dom->appendChild($root);ā€ voegt het hoofdknooppunt toe aan het XML-document.
  • ā€œ$dom->opslaan($xml_bestandsnaam);ā€ slaat het XML-bestand op in de hoofdmap van de webserver.
  • ā€œecho ā€œ$xml_file_name has been successfully createdā€;ā€ geeft een succesbericht weer.

Het testen van de XML Creator

Als je het bestand create_movies_list.php hebt opgeslagen in de map phptuts/xml, ga dan naar de betreffende map. URL http://localhost/phptuts/xml/create_movies_list.php

Maak een XML-document met behulp van PHP

Open het bestand movies_list.xml.

Maak een XML-document met behulp van PHP

SimpleXML versus DOMDocument

PHP biedt twee belangrijke manieren om met XML te werken. SimpleXML is het meest geschikt wanneer je voornamelijk gegevens hoeft te lezen, terwijl DOMDocument meer controle biedt voor het bouwen en grondig bewerken van documenten. De onderstaande tabel vergelijkt ze.

Aspect SimpleXML DOMDocument
Gebruiksgemak Heel eenvoudig; het document gedraagt ​​zich als geneste objecten. Een uitgebreidere, op knooppunten gebaseerde API
Best voor Lezen en licht redigeren Het creƫren van documenten en complexe manipulaties
Toegangsstijl $xml->record->name createElement() en appendChild()
XPath-ondersteuning Ja, via ->xpath() Ja, via de DOMXPath-klasse.

Een praktische vuistregel is om SimpleXML als eerste te gebruiken voor het lezen van feeds en eenvoudige bestanden, en over te schakelen naar DOMDocument wanneer je documenten moet maken, knooppunten op specifieke posities moet invoegen of moet valideren aan de hand van een schema.

Veelgestelde vragen

Beide formaten slaan gestructureerde gegevens op, maar XML gebruikt tags en ondersteunt attributen, commentaren en schema's, terwijl JSON lichter is en direct naar arrays en objecten verwijst. JSON wordt vaak gebruikt voor API's; XML is geschikt voor documenten en configuraties.

Laad het bestand met SimpleXML of DOMDocument, wijzig de knooppuntwaarden of attributen en schrijf het vervolgens terug. Met SimpleXML bewerk je de eigenschap en roep je asXML('file.xml') aan; met DOMDocument bewerk je het knooppunt en roep je save() aan.

XPath is een querytaal voor het selecteren van knooppunten in een XML-document. In PHP kun je `$xml->xpath('//record/name')` aanroepen met SimpleXML, of de `DOMXPath`-klasse gebruiken om overeenkomende elementen op te halen zonder te hoeven zoeken.ping door de hele boom.

Ja. AI kan code genereren met behulp van simplexml_load_string, json_encode en json_decode om tussen de formaten te converteren en gegevens te markeren die niet goed overeenkomen, zoals XML-attributen of gemengde inhoud. Controleer het resultaat.

Ja. Plak een voorbeeld van je XML-bestand en AI kan SimpleXML- of DOMDocument-code genereren die precies de elementen en attributen leest die je nodig hebt, inclusief lussen voor herhaalde records. Test het met echte bestanden.

Vat dit bericht samen met: