160 likes | 260 Views
A Sneak Preview of XML in PHP 5 Adam Trachtenberg Co-Author PHP Cookbook adam@trachtenberg.com January 21, 2004. XML Extensions in PHP 5. Work together as a unified whole. Are standardized on a single XML library: libxml2 . Fully comply with W3 specifications. Efficiently process data.
E N D
A Sneak Preview of XML in PHP 5Adam TrachtenbergCo-Author PHP Cookbookadam@trachtenberg.comJanuary 21, 2004
XML Extensions in PHP 5 • Work together as a unified whole. • Are standardized on a single XML library: libxml2. • Fully comply with W3 specifications. • Efficiently process data. • Provide you with the right XML tool for your job.
Five Major Extensions • DOM • SAX • SimpleXML • XPath • XSLT
Music Catalogue XML <music> <artist id="1"> <name>The Rolling Stones</name> <albums> <title>Exile On Main Street</title> </albums> </artist> <artist id="2"> <name>Aimee Mann</name> <albums> <title>I'm With Stupid</title> <title>Bachelor No. 2</title> </albums> </artist> </music>
DOM • The 800 pound gorilla of XML. • You can do everything and the <kitchen:sink> with DOM, but navigating through your documents can be cumbersome. • Tree-based API • Undergone a complete rewrite to correspond with DOM specifications.
DOM Example Code $music = new domDocument; $music->preserveWhiteSpace = false; $music->load('music.xml'); $names = $music-> getElementsByTagName('name'); foreach ($names as $name) { print $name->firstChild ->nodeValue; } The Rolling Stones Aimee Mann
SAX • PHP's original XML extension. • Streaming (or event-based) parser • Uses less memory than DOM, but frequently at the expense of more complex PHP code. • Used to use expat. Now uses libxml2
SimpleXML • A new PHP 5 only extension. • Excels at parsing RSS files, REST results, and configuration data. • If you know the document's format ahead of time, SimpleXML is the way to go. • Only supports elements, text nodes, and attributes. • Tree-based API
SimpleXML Example Code $x = simplexml_load_string($xml); $artists = $x->artist; foreach($artists as $artist) { print "$artist->name\n"; } The Rolling Stones Aimee Mann
XPath • Query XML documents like you're using regular expressions to find the subset of information that you need and eliminate the unnecessary portions. • Highly useful and undervalued piece of XML. • Usable with DOM and SimpleXML
XPath Example Code $xpath = new domXPath($music); $albums = $xpath->query( "/music/artist[name = 'Rolling Stones']/albums/name"); foreach ($albums as $a) print $a->firstChild->nodeValue; } Exile On Main Street
XSLT • A way to take XML documents and transform them into HTML or another output format. • Defines templates using XML-based stylesheets. • Easily shared among different applications, but has a quirky syntax. • Uses libxslt library instead of Sablotron.
XSLT Example Code $xslt = new xsltProcessor; $xsl = domDocument::load('music.xsl'); $xslt->importStylesheet($xsl); $xml = domDocument::load('music.xml'); print $xslt->transformToXML($xml);
Web Services • SOAP • PEAR::SOAP • soap Extension (Written in C) • REST • SimpleXML • XML-RPC • Still there…
Resources • DOM, XSLT, XPath • PHP 5 Meets XML and the DOMPHP Magazine: www.php-mag.net • SimpleXML • Using PHP 5's SimpleXMLO’Reilly Network: www.onlamp.com/php