We have to load an xml file and parse it with PHP using simplexml_load_string method, but it returns empty results. The code is put inside a Laravel 5.4 controller.
Below is the source code of it:
$xml = <<<XML
<cartridge_basiclti_link xmlns="http://www.imsglobal.org/xsd/imslticc_v1p0" xmlns:blti="http://www.imsglobal.org/xsd/imsbasiclti_v1p0" xmlns:lticm="http://www.imsglobal.org/xsd/imslticm_v1p0" xmlns:lticp="http://www.imsglobal.org/xsd/imslticp_v1p0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.imsglobal.org/xsd/imslticc_v1p0 http://www.imsglobal.org/xsd/lti/ltiv1p0/imslticc_v1p0.xsd http://www.imsglobal.org/xsd/imsbasiclti_v1p0 http://www.imsglobal.org/xsd/lti/ltiv1p0/imsbasiclti_v1p0p1.xsd http://www.imsglobal.org/xsd/imslticm_v1p0 http://www.imsglobal.org/xsd/lti/ltiv1p0/imslticm_v1p0.xsd http://www.imsglobal.org/xsd/imslticp_v1p0 http://www.imsglobal.org/xsd/lti/ltiv1p0/imslticp_v1p0.xsd">
<blti:title>SOWISO Calculus Course</blti:title>
<blti:description>
A new and interactive calculus course for first year university mathematics, for groups of students who differ in knowledge and previous education.
</blti:description>
<blti:launch_url>https://calculus.sowiso.nl/lti/login</blti:launch_url>
<blti:extensions platform="canvas.instructure.com">
<lticm:property name="domain">calculus.sowiso.nl</lticm:property>
<lticm:property name="icon_url">http://sowiso.nl/calculus/en/img/16x16.png</lticm:property>
<lticm:property name="link_text">SOWISO Calculus Course</lticm:property>
<lticm:property name="privacy_level">name_only</lticm:property>
<lticm:property name="tool_id">sowiso</lticm:property>
</blti:extensions>
</cartridge_basiclti_link>
XML;
$b = simplexml_load_string($xml);
print "<pre>";
print_r($b);
print "</pre>";
Thank you for suggestions.
Your xml string with namespace so it's not work with simplexml_load_string
function. For this namespace xml string you need to used SimpleXMLElement
object.
For your code solution as below
$blti = new SimpleXMLElement($xml);
$bltiFields = $blti->children('blti', true);
echo "Title: " . (string) $bltiFields->title . "<br>";
echo "Description: " . (string) $bltiFields->description;
Output as below
Title: SOWISO Calculus Course
Description: A new and interactive calculus course for first year university mathematics, for groups of students who differ in knowledge and previous education.