PHP版本5.5.12 simplexml_load_string方法返回空结果

时间:2017-07-22 13:17:12

标签: php xml laravel-5.4 simplexml-load-string

我们必须加载一个xml文件并使用simplexml_load_string方法用PHP解析它,但它返回空结果。代码放在Laravel 5.4控制器中。

以下是它的源代码:

$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>";

感谢您的建议。

1 个答案:

答案 0 :(得分:0)

带有命名空间的xml字符串,因此无法使用simplexml_load_string函数。对于此命名空间xml字符串,您需要使用SimpleXMLElement object。

对于您的代码解决方案,如下所示

$blti = new SimpleXMLElement($xml);
$bltiFields = $blti->children('blti', true);

echo "Title: " . (string) $bltiFields->title . "<br>";
echo "Description: " . (string) $bltiFields->description;

输出如下

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.