xml for php developersby sudheer...
TRANSCRIPT
-
XML For PHP Developersby
Sudheer Satyanarayanahttp://techchorus.net
Bangalore PHP User Group Meetup30 October 2010
-
Agenda
Quick introduction to XML basicsRecipe 1 - parsing RSS feedRecipe 2 - creating Atom feedRecipe 3 - scraping information from websites using XMLQuestion and answer
At the end of the session, you will be able to start using XML with PHP.
-
XML Basics
XML document has a tree structure XML documents can be validated using an XML schemaAll major programming languages support reading and writing XML documentsHundreds of technologies are built on top of XMLXHTML is one of the XML markup languages
-
XML Parsers In PHP
simplexmlDOMSAXXMLReaderXMLWriter
-
Which Parser To Use
simplexml - really simple XML documentsDOM - heavy liftingSAX - large XML documentsXMLReader - large XML documents
Don't use:string manipulation to create XML documentsregular expressions to parse XML documents
-
Recipe 1
simplexml usage Programmatically retrieve weather information in your locationUsing Yahoo! Weatherparse RSS feed
-
RSS - Really Simple Syndication
-
Sample RSS document
My Home Pagehttp://www.example.comMy RSS sample page
RSS Tutorialhttp://www.example.com/rssNew RSS tutorial
XML Tutorialhttp://www.example.com/xmlNew XML tutorial
-
Retrieving weather info from Yahoo!
http://weather.yahooapis.com/forecastrss?w=2442047&u=c w = location, WOEIDu = degrees units (Fahrenheit or Celsius)http://weather.yahooapis.com/forecastrss?w=2295420&u=c
-
Conditions for Bangalore, IN at 8:30 pm IST
Current Conditions:
Mostly Cloudy, 24 C
Forecast:
Wed - Partly Cloudy. High: 30 Low: 19
Thu - Sunny. High: 33 Low: 20
]]> -
Visualization
-
PHP Code To Parse The Feed
-
Output
Current Conditions:Haze, 22 CForecast:Tue - Partly Cloudy. High: 26 Low: 19Wed - Isolated Thunderstorms. High: 27 Low: 19
Full Forecast at Yahoo! Weather(provided by The Weather Channel)
-
Atom
-
Atom - key takeaways
Disagreements in RSS community Atom entry documentAtom feed documentAtom Publishing ProtocolUse Atom if you are a feed publisher
-
Sample Atom Feed
PHP User Group Meethttp://example.com/my_unique_id.xmlBangalore PHP Users2010-10-23T10:30:02Z
October 2010 MeetGreat meetuphttp://example.com/my_uique_feed_id.xml2010-10-27T10:30:02Z
Sudheer Satyanarayana
-
Atom Feed Structure
-
Atom Structure
...............
-
Recipe 2
Generate an Atom feedPHP DOM
-
Create An Atom Feed Document
-
Create Link Nodes
$node = $doc->createElement('link');$link = $root->appendChild($node);$link->setAttribute('href', 'http://www.meetup.com/Bangalore-PHP-Users/');$link->setAttribute('rel', 'self');
$node = $doc->createElement('link');$link = $root->appendChild($node);$link->setAttribute('href', 'http://www.meetup.com/Bangalore-PHP-Users/feed/atom.html');$link->setAttribute('rel', 'alternate');
-
Create Other Nodes
$root->appendChild(new DOMElement('title', 'PHP User Group Meet'));
$root->appendChild(new DOMElement('id', 'http://example.com/my_unique_id.xml'));
$root->appendChild(new DOMElement('subtitle', 'Bangalore PHP Users'));
$root->appendChild(new DOMElement('updated', '2010-10-23T10:30:02Z'));
-
Create Entry Node$node = $doc->createElement('entry');$entry = $root->appendChild($node);
$node = $doc->createElement('link');$link = $entry->appendChild($node);$link->setAttribute('href', 'http://www.meetup.com/Bangalore-PHP-Users/calendar/15022884/atom.xml');$link->setAttribute('rel', 'self');
$node = $doc->createElement('link');$link = $entry->appendChild($node);$link->setAttribute('href', 'http://www.meetup.com/Bangalore-PHP-Users/calendar/15022884/atom.html');$link->setAttribute('rel', 'alternate');
-
Create Other Nodes In Entry
$entry->appendChild(new DOMElement('title', 'October 2010 Meet'));$entry->appendChild(new DOMElement('summary', 'Great meetup'));$entry->appendChild(new DOMElement('id', 'http://example.com/my_uique_feed_id.xml'));$entry->appendChild(new DOMElement('updated', '2010-10-27T10:30:02Z'));$node = $doc->createElement('author');$author = $entry->appendChild($node);$author->appendChild(new DOMElement('name', 'Sudheer Satyanarayana'));
-
Save As XML
$doc->formatOutput = TRUE;
print $doc->saveXML();
-
Scraping Websites
Grab HTMLTransform to XMLUse XPath to navigate the documentUse accessors to retrieve text content
-
Recipe 3
Retrieve list of members of Lok Sabha from Government website http://164.100.47.132/LssNew/Members/Alphabaticallist.aspx
-
S.No.Name of MemberParty NameConstituency (State)
Aaroon Rasheed,Shri J.M.
Indian National CongressTheni (Tamil Nadu )
Abdul Rahman,Shri
Dravida Munnetra Kazhagam
Vellore (Tamil Nadu )
-
Building Xpath ExpressionFind the table with the specified ID //table[@id='ctl00_ContPlaceHolderMain_Alphabaticallist1_dg1'] Select all table rows after position 1tr[position()>1] Select table cells with position 2td[position()=2] Select anchor elementaSelect all children that are text nodeschild::text()
-
Final Xpath Expression
//table[@id='ctl00_ContPlaceHolderMain_Alphabaticallist1_dg1']/tr[position()>1]/td[position()=2]/a/child::text()
-
PHP Script
-
QOTD
Retrieves quote of the day from Wikiquotes.orgCreates a feedAlso sends SMS to subscribers
http://qotd.techchorus.net http://labs.google.co.in/smschannels/channel/WikiQuoteOfTheDay
-
Where To Go From Here?
Start using XML right awayNow you know how to parse and create feedsLearn more XML technologies Read the specifications Scrape websitesImagination is your limitBuild the next big thing since sliced bread!
-
ResourcesDownload files shown in this presentation -
http://techchorus.net/downloads/xml-for-php-developers/xml-for-php-developers.tar.gz http://techchorus.net/downloads/xml-for-php-developers/xml-for-php-developers.zip
PHP Manual - http://in3.php.net/manual/en/refs.xml.phpTech Chorus - http://techchorus.netW3Schools - http://www.w3schools.com/xml/default.aspBook - Pro PHP And XML Web Services by Robert Richards. Review - http://techchorus.net/pro-php-xml-and-web-services-book-reviewMore useful links - http://xml.farsquare.com/
-
Questions?
-
Thank You
The slides will be available at SlideSharehttp://www.slideshare.net/bngsudheer
My Twitter handle: @bngsudheer
Blog: http://techchorus.net
Business: http://binaryvibes.co.in
E-mail: sudheer @ above business URL
-
License
XML For PHP Developers by Sudheer Satyanarayana is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 2.5 India License . Based on a work at techchorus.net . Permissions beyond the scope of this license may be available at http://techchorus.net .