xml for php developersby sudheer...

37
XML For PHP Developers by Sudheer Satyanarayana http://techchorus.net Bangalore PHP User Group Meetup 30 October 2010

Upload: others

Post on 29-Jan-2021

31 views

Category:

Documents


0 download

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 .