
Jak DOMDocument tak i SimpleXML používají shodný parser libxml2. Z důvodu použití stejného parseru jsou obě knihovny na zpracování stejně rychlé.
SimpleXML
Je možné jej využit pro zpracování jednoduchých XML souborů. Jeho API je velmi omezené, nicméně umožňuje jednodušší práci s uzly. Na validaci XML rovnou zapomeňte. Osobně se mi nelíbí magický přístup k atributu. Dále co bych chtěl podotknout je, že u SimpleXML můžete také zapomenout na vnořování dat do CDATA, nicméně pozitivní je, že CDATA SimpleXML přečíst dokáže.
Výpis pomocí SimpleXML poté může vypadat například takto:
<?php
$xmlStr = <<<XML
<?xml version='1.0' standalone='yes'?>
<items>
<item>Demo</item>
</items>
XML;
$xml = new SimpleXMLElement($xmlStr);
echo $xml->item[0];
?>
DOMDocument
Oproti SimpleXML je DOMDocument určitě složitější na naučení. Nicméně DOMDocument dokáže zpracovat všechny XML dokumenty. A mezi XML dokumenty které dokáže zpracovat lze zařadit i HTML dokument. Jeho API je mnohem podrobnější a dokáže tedy pracovat více do hloubky. Dále dokáže analyzovat i chybné XML soubory. Co si osobně velice chválím je kromě základní validace i validaci oproti relaxNG schématu. Rád také pracuji s XPath které nebízí. Příjde mi že práce s XPath je více efektivnější než postupné parsování pomocí klasického API.
Výpis pomocí DOMDocument poté může vypadat například takto:
<?php
$xmlStr = <<<XML
<?xml version='1.0' standalone='yes'?>
<items>
<item>Demo</item>
</items>
XML;
$xml = new DOMDocument();
$xml->loadXML($xmlStr);
// Přístup pomocí XPath
$xpath = new DOMXPath($xml);
$query = $xpath->query('/items/item');
echo $query->item(0)->nodeValue;
// Přístup pomocí API
$item = $xml->getElementsByTagName('item');
echo $item->item(0)->nodeValue;
?>
XMLReader
Jedná se o dost komplikovaný nástroj který má stejné výhody jako DOMDocument, nicméně jeho využití z důvodu složitosti raději zvažte. Jeho hlavní výhodou jsou velmi malé paměťové nároky které ovšem vyváží velkou složitostí API.