xml and php 5

16
A Sneak Preview of XML in PHP 5 Adam Trachtenberg Co-Author PHP Cookbook [email protected] January 21, 2004

Upload: adam-trachtenberg

Post on 15-Jan-2015

1.531 views

Category:

Documents


1 download

DESCRIPTION

 

TRANSCRIPT

Page 1: XML and PHP 5

A Sneak Preview of XML in PHP 5

Adam TrachtenbergCo-Author PHP Cookbook

[email protected]

January 21, 2004

Page 2: XML and PHP 5

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.

Page 3: XML and PHP 5

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

Five Major Extensions

• DOM

• SAX

• SimpleXML

• XPath

• XSLT

Page 4: XML and PHP 5

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>

Page 5: XML and PHP 5

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.

Page 6: XML and PHP 5

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

Page 7: XML and PHP 5

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

Page 8: XML and PHP 5

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

Page 9: XML and PHP 5

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

Page 10: XML and PHP 5

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

Page 11: XML and PHP 5

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

Page 12: XML and PHP 5

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.

Page 13: XML and PHP 5

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);

Page 14: XML and PHP 5

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

Web Services

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

• REST– SimpleXML

• XML-RPC– Still there…

Page 15: XML and PHP 5

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

Page 16: XML and PHP 5

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

Did I mention I wrote a book?