+ All Categories
Home > Documents > A Sneak Preview of XML in PHP 5 Adam Trachtenberg Co-Author PHP Cookbook [email protected]...

A Sneak Preview of XML in PHP 5 Adam Trachtenberg Co-Author PHP Cookbook [email protected]...

Date post: 22-Dec-2015
Category:
Upload: christopher-stokes
View: 216 times
Download: 1 times
Share this document with a friend
16
A Sneak Preview of XML in PHP 5 Adam Trachtenberg Co-Author PHP Cookbook [email protected] January 21, 2004
Transcript

A Sneak Preview of XML in PHP 5

Adam TrachtenbergCo-Author PHP Cookbook

[email protected]

January 21, 2004

Adam Trachtenberg [http://www.trachtenberg.com]

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.

Adam Trachtenberg [http://www.trachtenberg.com]

Five Major Extensions

• DOM

• SAX

• SimpleXML

• XPath

• XSLT

Adam Trachtenberg [http://www.trachtenberg.com]

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>

Adam Trachtenberg [http://www.trachtenberg.com]

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.

Adam Trachtenberg [http://www.trachtenberg.com]

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 StonesAimee Mann

Adam Trachtenberg [http://www.trachtenberg.com]

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

Adam Trachtenberg [http://www.trachtenberg.com]

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

Adam Trachtenberg [http://www.trachtenberg.com]

SimpleXML Example Code

$x = simplexml_load_string($xml);$artists = $x->artist;

foreach($artists as $artist) {    print "$artist->name\n";}

The Rolling StonesAimee Mann

Adam Trachtenberg [http://www.trachtenberg.com]

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

Adam Trachtenberg [http://www.trachtenberg.com]

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

Adam Trachtenberg [http://www.trachtenberg.com]

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.

Adam Trachtenberg [http://www.trachtenberg.com]

XSLT Example Code

$xslt = new xsltProcessor;

$xsl = domDocument::load('music.xsl');

$xslt->importStylesheet($xsl);

$xml = domDocument::load('music.xml');

print $xslt->transformToXML($xml);

Adam Trachtenberg [http://www.trachtenberg.com]

Web Services

• SOAP– PEAR::SOAP– soap Extension (Written in C)

• REST– SimpleXML

• XML-RPC– Still there…

Adam Trachtenberg [http://www.trachtenberg.com]

Resources

• DOM, XSLT, XPath– PHP 5 Meets XML and the DOM

PHP Magazine: www.php-mag.net

• SimpleXML– Using PHP 5's SimpleXML

O’Reilly Network: www.onlamp.com/php

Adam Trachtenberg [http://www.trachtenberg.com]

Did I mention I wrote a book?


Recommended