{"id":38993,"date":"2018-06-24T03:01:08","date_gmt":"2018-06-23T17:01:08","guid":{"rendered":"http:\/\/www.rjmprogramming.com.au\/ITblog\/?p=38993"},"modified":"2018-10-28T07:38:42","modified_gmt":"2018-10-27T21:38:42","slug":"xml-on-the-fly-via-php-primer-tutorial","status":"publish","type":"post","link":"https:\/\/www.rjmprogramming.com.au\/ITblog\/xml-on-the-fly-via-php-primer-tutorial\/","title":{"rendered":"XML on the Fly via PHP Primer Tutorial"},"content":{"rendered":"<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/xml_on_the_fly.php\"><img decoding=\"async\" style=\"float:left;border: 15px solid pink;\" alt=\"XML on the Fly via PHP Primer Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/PHP\/xml_on_the_fly.jpg\" title=\"XML on the Fly via PHP Primer Tutorial\" \/><\/a><p class=\"wp-caption-text\">XML on the Fly via PHP Primer Tutorial<\/p><\/div>\n<p>The Three P&#8217;s (that being PHP and Python and Perl) are all pretty good at interfacing with the XML protocol and format.  And that XML is a very important protocol in today&#8217;s digital age.  Over the last few days with our Android mobile app<font size=1>lications<\/font>, for instance, XML files served the purpose of &#8230;<\/p>\n<ul>\n<li>GUI look data source<\/li>\n<li>project settings<\/li>\n<\/ul>\n<p> &#8230; the diversity of usage apparent here, and it shows throughout the goings on of users interested in &#8220;data&#8221;, especially &#8220;data with intelligence&#8221;.  HTML has &#8220;data intelligence&#8221; capabilities, but not nearly to the pared down degree XML does.  It is all about the storage of data, pure and simple, not in the &#8220;game&#8221; of a look or feel to anything, so much as HTML does.<\/p>\n<p>And this close relationship with &#8220;data&#8221; makes it no surprise, I&#8217;m sure, to you that databases like Oracle or MS-SQL or MySql and others, these days, have syntax especially designed for the import or export usage of XML data in string or file format.<\/p>\n<p>XML is a very hierarchical protocol, which suits the way a lot of data works.<\/p>\n<p>Interested in making some rudimentary XML?  Today, we write some XML using PHP and the <a target=_blank title='DOMDocument class information' href='http:\/\/php.net\/manual\/en\/class.domdocument.php'>DOMDocument class<\/a>, but we have to thank <i>The PHP Anthology (Volume II: Applications)<\/i> by Harry Fuecks (ISBN: 0957921845) for the idea to try the approach we take today, and they showed code using the &#8220;DOM&#8221;, DOMDocument&#8217;s predecessor.  To get from &#8220;DOM&#8221; thinking to &#8220;DOMDocument&#8221; thinking, reminded us of that CSS &#8220;mapping&#8221; to Javascript DOM idea that you substitute the CSS &#8220;-&#8221; (minus) and next lowercase letter for a Javascript DOM capital letter as per &#8230;<\/p>\n<p><code><br \/>\nCSS<br \/>\n#the_el { background-color: yellow; }<br \/>\nJavascript DOM<br \/>\ndocument.getElementById('the_el').style.backgroundColor='yellow';<br \/>\n<\/code><\/p>\n<p> &#8230; &#8220;DOM&#8221; (class) methods often go to &#8220;DOMDocument&#8221; equivalents via &#8220;DOM&#8221; &#8220;-&#8221; lowercase letter mapped to &#8220;DOMDocument&#8221; capital letter ones.<\/p>\n<p>Today&#8217;s downloadable PHP creating very rudimentary XML is <a target=_blank href='http:\/\/www.rjmprogramming.com.au\/PHP\/xml_on_the_fly.php_GETME' title='xml_on_the_fly.php'>xml_on_the_fly.php<\/a> that you can try for yourself at this <a target=_blank href='http:\/\/www.rjmprogramming.com.au\/PHP\/xml_on_the_fly.php' title='Click picture'>live run<\/a> link.<\/p>\n<p>You might also be interested in <a title='Javascript putElement(s)By via PHP Relative URLs Tutorial' href='#aspeeslit'>Javascript putElement(s)By via PHP Relative URLs Tutorial<\/a>.<\/p>\n<hr>\n<p id='aspeeslit'>Previous relevant <a target=_blank title='Javascript putElement(s)By via PHP Relative URLs Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/javascript-putelementsby-via-php-relative-urls-tutorial\/'>Javascript putElement(s)By via PHP Relative URLs Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/putElementsBy.php?url=https:\/\/newlearninggroup.com\/The_New_Learning_Group\/Play.html\"><img decoding=\"async\" style=\"float:left;border: 15px solid pink;\" alt=\"Javascript putElement(s)By via PHP Relative URLs Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/PHP\/putElementsBy_RelativeURLs.jpg\" title=\"Javascript putElement(s)By via PHP Local File Tutorial\" id='xdghfsdw' \/><\/a><p class=\"wp-caption-text\">Javascript putElement(s)By via PHP Relative URLs Tutorial<\/p><\/div>\n<p>Today we&#8217;ve continued with the the Javascript <a target=_blank title='(Javascript) DOM information from Wikiedia ... thanks' href='http:\/\/en.wikipedia.org\/wiki\/Document_Object_Model'>DOM<\/a> journey as explained for the last few days with <a target=_blank href='#jpvplft' title='Javascript putElement(s)By via PHP Local File Tutorial'>Javascript putElement(s)By via PHP Local File Tutorial<\/a> as shown below, as to whether we can come up with some useful &#8220;meaningful&#8221; functionality for &#8230;<\/p>\n<ul>\n<li>putElementById()<\/li>\n<li>putElementsByClassName()<\/li>\n<li>putElementsByTagName()<\/li>\n<\/ul>\n<p>&#8230; in Javascript &#8230; and, today, we&#8217;ve improved it with the allowance for relative URLs on such HTML elements as <i>img<\/i> for example, and have looked at Ajax as an idea, but have put off its use, because we see no performance improvement.<\/p>\n<p>The methods will not work with all URL data input, and this is an ongoing curiosity, which we may one day return to examine further, but sometimes you have to take a break on some projects, so, if you don&#8217;t mind &#8230; there&#8217;s been that <i>&#8220;to make the morning coffee and breakfast before you even think of it&#8221;<\/i> project we&#8217;ve been meaning to get back to &#8230; as a matter of fact there&#8217;s been a breakthrough on it &#8230; and &#8230; well &#8230; <i>&#8220;Would you mind bringing up that dust pan from the laundry?&#8221;<\/i> <i>&#8220;The robot&#8217;s having another mini nervous breakdown and has put its fist though the plate.&#8221;<\/i> &#8230; breakthrough &#8230; get it &#8230; chortle, chortle.<\/p>\n<p>You may remember, a couple of days ago, the introduction of the PHP <a target=_blank title='DOMDocument class information' href='http:\/\/php.net\/manual\/en\/class.domdocument.php'>DOMDocument<\/a> class functionality, where this <a target=_blank title='Useful DomDocument' href='http:\/\/www.binarytides.com\/php-tutorial-parsing-html-with-domdocument\/'>link<\/a> was very useful.   It allows PHP to simulate some of Javascript&#8217;s DOM capabilities, and in our case it is used to parse HTML from within PHP.  It also makes it easy to accept XML input data, which is presented with the &lt; and &gt; as shown in the XML &#8230; you might want to try an XML URL or data file browsed for.<\/p>\n<p><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/putElementsBy_RelativeURLs.jpg\" title=\"Click picture\">Today<\/a> you can see that <a target=_blank title='Relative vs absolute URLs' href='http:\/\/stackoverflow.com\/questions\/2005079\/absolute-vs-relative-urls'>relative URL<\/a> (mapped to an absolute URL) functionality as a <a target=_blank href='http:\/\/www.rjmprogramming.com.au\/PHP\/putElementsBy.php' title='putElementsBy.php'>live run<\/a>.<\/p>\n<p>And we worked out the <a target=_blank href='http:\/\/www.w3schools.com\/jsref\/met_win_open.asp' title='window.open information from w3schools'>window.open<\/a> approach doesn&#8217;t work everywhere, so we may end up falling back, a bit, on the underlying PHP, sometimes.<\/p>\n<p>Today&#8217;s code changes were helped out enormously by the advice on this <a target=_blank title='Good advice regarding parsing URLs' href='http:\/\/php.net\/manual\/en\/function.parse-url.php#86115'>link<\/a> regarding parsing URLs in PHP &#8230; thanks.<\/p>\n<p>Today&#8217;s downloadable PHP is <a target=_blank href='http:\/\/www.rjmprogramming.com.au\/PHP\/putElementsBy.php---GETME' title='putElementsBy.php'>putElementsBy.php<\/a><\/p>\n<p>Progression on the code &#8230; <a target=_blank href='http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/PHP\/putElementsBy.php---GETME' title='putElementsBy.php'>putElementsBy.php<\/a><\/p>\n<hr \/>\n<p id='jpvplft'>Previous relevant <a target=_blank href='http:\/\/www.rjmprtogramming.com.au\/wordpress\/?p=10881' title='Javascript putElement(s)By via PHP Local Files Tutorial'>Javascript putElement(s)By via PHP Local Files Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/putElementsBy.php?url=http:\/\/www.bing.com\"><img decoding=\"async\" style=\"float:left;border: 15px solid pink;\" alt=\"Javascript putElement(s)By via PHP Local Files Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/PHP\/putElementsBy_LocalFile.jpg\" title=\"Javascript putElement(s)By via PHP Local File Tutorial\" id='xdghfsdw' \/><\/a><p class=\"wp-caption-text\">Javascript putElement(s)By via PHP Local Files Tutorial<\/p><\/div>\n<p>Today we march on with the the Javascript <a target=_blank title='(Javascript) DOM information from Wikiedia ... thanks' href='http:\/\/en.wikipedia.org\/wiki\/Document_Object_Model'>DOM<\/a> journey as explained for the last few days with <a target=_blank href='#jpvpfut' title='Javascript putElement(s)By via PHP Follow Up Tutorial'>Javascript putElement(s)By via PHP Follow Up Tutorial<\/a> as shown below, as to whether we can come up with some useful &#8220;meaningful&#8221; functionality for &#8230;<\/p>\n<ul>\n<li>putElementById()<\/li>\n<li>putElementsByClassName()<\/li>\n<li>putElementsByTagName()<\/li>\n<\/ul>\n<p>&#8230; in Javascript &#8230; and though, today, we&#8217;ve improved, it still needs more work, such as catering for relative URLs, Ajax mode, perhaps, and the way it will not work with all URL data input.<\/p>\n<p>You may remember, yesterday, the introduction of the PHP <a target=_blank title='DOMDocument class information' href='http:\/\/php.net\/manual\/en\/class.domdocument.php'>DOMDocument<\/a> class functionality, where this <a target=_blank title='Useful DomDocument' href='http:\/\/www.binarytides.com\/php-tutorial-parsing-html-with-domdocument\/'>link<\/a> was very useful.   It allows PHP to simulate some of Javascript&#8217;s DOM capabilities, and in our case it is used to parse HTML from within PHP.  It also makes it easy to accept XML input data, as this happens here today.<\/p>\n<p>Here, today, we also add functionality for the use of local hard disk file browsing.<\/p>\n<p><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/putElementsBy_LocalFile.jpg\" title=\"Click picture\">Today<\/a> you can see that extra local file browsing and XML input functionality as a <a target=_blank href='http:\/\/www.rjmprogramming.com.au\/PHP\/putElementsBy.php' title='putElementsBy.php'>live run<\/a>.<\/p>\n<p>And we worked out the <a target=_blank href='http:\/\/www.w3schools.com\/jsref\/met_win_open.asp' title='window.open information from w3schools'>window.open<\/a> approach doesn&#8217;t work everywhere, so we may end up falling back, a bit, on the underlying PHP, sometimes.<\/p>\n<p>Today&#8217;s downloadable PHP is <a target=_blank href='http:\/\/www.rjmprogramming.com.au\/PHP\/putElementsBy.php--GETME' title='putElementsBy.php'>putElementsBy.php<\/a><\/p>\n<p>Progression on the code &#8230; <a target=_blank href='http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/PHP\/putElementsBy.php--GETME' title='putElementsBy.php'>putElementsBy.php<\/a><\/p>\n<hr \/>\n<p id='jpvpfut'>Previous relevant <a target=_blank href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=10870' title='Javascript putElement(s)By via PHP Follow Up Tutorial'>Javascript putElement(s)By via PHP Follow Up Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/putElementsBy.php?url=http:\/\/www.rjmprogramming.com.au\"><img decoding=\"async\" style=\"float:left;border: 15px solid pink;\" alt=\"Javascript putElement(s)By via PHP Follow Up Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/PHP\/putElementsBy_FollowUp.jpg\" title=\"Javascript putElement(s)By via PHP Follow Up Tutorial\" id='dghfsdw' \/><\/a><p class=\"wp-caption-text\">Javascript putElement(s)By via PHP Follow Up Tutorial<\/p><\/div>\n<p>Today we continue the Javascript <a target=_blank title='(Javascript) DOM information from Wikiedia ... thanks' href='http:\/\/en.wikipedia.org\/wiki\/Document_Object_Model'>DOM<\/a> journey as explained yesterday with <a target=_blank href='#jpvppt' title='Javascript putElement(s)By via PHP Primer Tutorial'>Javascript putElement(s)By via PHP Primer Tutorial<\/a> as shown below, as to whether we can come up with some useful &#8220;meaningful&#8221; functionality for &#8230;<\/p>\n<ul>\n<li>putElementById()<\/li>\n<li>putElementsByClassName()<\/li>\n<li>putElementsByTagName()<\/li>\n<\/ul>\n<p>&#8230; in Javascript &#8230; and though, today, we&#8217;ve improved, it still needs more work, such as catering for relative URLs, Ajax mode, perhaps, and the way it will not work with all URL data input.<\/p>\n<p>Today, to improve the program, we can, at times use the PHP <a target=_blank title='DOMDocument class information' href='http:\/\/php.net\/manual\/en\/class.domdocument.php'>DOMDocument<\/a> class functionality, and this <a target=_blank title='Useful DomDocument' href='http:\/\/www.binarytides.com\/php-tutorial-parsing-html-with-domdocument\/'>link<\/a> was very useful.   It allows PHP to simulate some of Javascript&#8217;s DOM capabilities, and in our case it is used to parse HTML from within PHP.<\/p>\n<p><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/putElementsBy_FollowUp.jpg\" title=\"Click picture\">Today<\/a> we make it more user-friendly with a text input button to accept a user-defined URL to use as the data base (small blank chortle).<\/p>\n<p>And we worked out the <a target=_blank href='http:\/\/www.w3schools.com\/jsref\/met_win_open.asp' title='window.open information from w3schools'>window.open<\/a> approach doesn&#8217;t work everywhere, so we may end up falling back, a bit, on the underlying PHP, sometimes.<\/p>\n<p>Today&#8217;s downloadable PHP is <a target=_blank href='http:\/\/www.rjmprogramming.com.au\/PHP\/putElementsBy.php-GETME' title='putElementsBy.php'>putElementsBy.php<\/a><\/p>\n<p>Progression on the code &#8230; <a target=_blank href='http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/PHP\/putElementsBy.php-GETME' title='putElementsBy.php'>putElementsBy.php<\/a><\/p>\n<hr \/>\n<p id='jpvppt'>Previous relevant <a target=_blank href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=10855' title='Javascript putElement(s)By via PHP Primer Tutorial'>Javascript putElement(s)By via PHP Primer Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/putElementsBy.php?url=http:\/\/www.rjmprogramming.com.au\/PHP\/audio_video.php\"><img decoding=\"async\" style=\"float:left;border: 15px solid pink;\" alt=\"Javascript putElement(s)By via PHP Primer Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/PHP\/putElementsBy.jpg\" title=\"Javascript putElement(s)By via PHP Primer Tutorial\" id='ghfsdw' onmouseover='  this.src=this.src.replace(\".gif\",\".JPG\").replace(\".jpg\",\".png\").replace(\".png\",\".gif\").replace(\".JPG\",\".jpg\");       '  \/><\/a><p class=\"wp-caption-text\">Javascript putElement(s)By via PHP Primer Tutorial<\/p><\/div>\n<p>If you are into Javascript <a target=_blank title='(Javascript) DOM information from Wikiedia ... thanks' href='http:\/\/en.wikipedia.org\/wiki\/Document_Object_Model'>DOM<\/a> you will be into &#8230;<\/p>\n<ul>\n<li><a target=_blank title='Javascript getElementById() method information from w3schools' href='http:\/\/www.w3schools.com\/jsref\/met_document_getelementbyid.asp'>getElementById()<\/li>\n<li><a target=_blank title='Javascript getElementsByClassName() method information from w3schools' href='http:\/\/www.w3schools.com\/jsref\/met_document_getelementsbyclassname.asp'>getElementsByClassName()<\/a><\/li>\n<li><a target=_blank title='Javascript getElementsByTagName() method information from w3schools' href='http:\/\/www.w3schools.com\/jsref\/met_document_getelementsbytagname.asp'>getElementsByTagName()<\/a><\/li>\n<\/ul>\n<p>&#8230; and being into programming, for every <i>get<\/i> you ever see in a function or method name, you may be accustomed to looking for the <i>set<\/i> or <i>put<\/i> reverse functionality function or method.<\/p>\n<p>Gadzooks &#8230; there is no &#8230;<\/p>\n<ul>\n<li>putElementById()<\/li>\n<li>putElementsByClassName()<\/li>\n<li>putElementsByTagName()<\/li>\n<\/ul>\n<p>&#8230; and no <i>set<\/i> versions either, in Javascript &#8230; but today we imagine a set of Javascript functions (minus the document. bizzo though &#8230; a poet who doesn&#8217;t know it&#8230; chortle, chortle) &#8230; how could they work? &#8230; well, you could try packing them off with a couple of vegemite sandwiches and an orange off up the road to get the bus &#8230; or, well, maybe a transfer of HTML element&#8217;age (elementary &#8230; no end to the chortles today!) to the end of our own webpage (optionally from another URL, perhaps &#8230; (we&#8217;ll need PHP) &#8230; haven&#8217;t dealt with relative URLs yet, though).<\/p>\n<p>So, try it if you like &#8230;<\/p>\n<ul>\n<li><a target=_blank href='http:\/\/www.rjmprogramming.com.au\/PHP\/putElementsBy.php' title='Use this as the URL'>Live run with this page as the URL<\/a><\/li>\n<li><a target=_blank href='http:\/\/www.rjmprogramming.com.au\/PHP\/putElementsBy.php?url=http:\/\/www.rjmprogramming.com.au\/PHP\/audio_video.php' title='Use audio_video.php as the URL'>Live run with another page as the URL<\/a><\/li>\n<\/ul>\n<p>Today&#8217;s downloadable PHP is <a target=_blank href='http:\/\/www.rjmprogramming.com.au\/PHP\/putElementsBy.php_GETME' title='putElementsBy.php'>putElementsBy.php<\/a> (whose code would improve with the relative URL issue disappearing &#8230; and if this disappears you know we got to that first!)<\/p>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d10855' onclick='var dv=document.getElementById(\"d10855\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"http:\/\/www.rjmprogramming.com.au\/wordpress\/?tag=DOM\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d10855' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr \/>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d10870' onclick='var dv=document.getElementById(\"d10870\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"http:\/\/www.rjmprogramming.com.au\/wordpress\/?tag=Javascript\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d10870' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr \/>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d10881' onclick='var dv=document.getElementById(\"d10881\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"http:\/\/www.rjmprogramming.com.au\/wordpress\/?tag=XML\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d10881' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d10888' onclick='var dv=document.getElementById(\"d10888\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"http:\/\/www.rjmprogramming.com.au\/wordpress\/?tag=URL\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d10888' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d38993' onclick='var dv=document.getElementById(\"d38993\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/xml\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d38993' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n","protected":false},"excerpt":{"rendered":"<p>The Three P&#8217;s (that being PHP and Python and Perl) are all pretty good at interfacing with the XML protocol and format. And that XML is a very important protocol in today&#8217;s digital age. Over the last few days with &hellip; <a href=\"https:\/\/www.rjmprogramming.com.au\/ITblog\/xml-on-the-fly-via-php-primer-tutorial\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,37],"tags":[354,356,1549,564,576,932,997,1002,1319,1480],"class_list":["post-38993","post","type-post","status-publish","format-standard","hentry","category-elearning","category-tutorials","tag-dom","tag-domdocument","tag-element","tag-hierarchy","tag-html","tag-php","tag-programming","tag-protocol","tag-tutorial","tag-xml"],"_links":{"self":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/38993"}],"collection":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/comments?post=38993"}],"version-history":[{"count":11,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/38993\/revisions"}],"predecessor-version":[{"id":41539,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/38993\/revisions\/41539"}],"wp:attachment":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/media?parent=38993"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/categories?post=38993"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/tags?post=38993"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}