由於某種原因,此操作給了我一個「無效的返回格式」。如何使loadXML加載我的XML文件?
$dom = new DomDocument('1.0', 'utf-8');
$ret = @$dom->loadXML($data);
if (! $ret) {
$_SESSION['error'] = 'invalid returned format';
return false;
}
我使用$數據= curl_exec($插座)來檢索鏈接到XML文件,我能夠用這個動作來呼應文件的內容類型,所以該文件存在:
if (strpos($content_type, 'text/xml') === FALSE) {
$_SESSION['error'] = 'invalid returned format';
return false;
}
我怎樣才能讓它不錯?
謝謝!
額外的代碼:
curl_setopt($socket, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($socket, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($socket, CURLOPT_CONNECTTIMEOUT, 15);
curl_setopt($socket, CURLOPT_TIMEOUT, (15+5));
curl_setopt($socket, CURLOPT_SSL_VERIFYHOST, 2);
$data = curl_exec($socket);
$code = curl_getinfo($socket, CURLINFO_HTTP_CODE);
$content_type = curl_getinfo($socket, CURLINFO_CONTENT_TYPE);
curl_close($socket);
if ($code != 200) {
$_SESSION['error'] = 'Unable to talk to sm';
return false;
}
if (strpos($content_type, 'text/xml') === FALSE) {
$_SESSION['error'] = 'invalid returned format';
return false;
}
$dom = new DomDocument('1.0', 'utf-8');
$ret = @$dom->loadXML($data);
if (! $ret) {
$_SESSION['error'] = 'invalid returned format';
return false;
}
if ($dom->documentElement->nodeName != 'user') {
$_SESSION['error'] = 'authentication issue';
return false;
}
XML代碼:
<?xml version="1.0" encoding="UTF-8"?>
<user login="myfile">
<application id="10" name="test" description="test"> … </application>
</user>
XML渲染FILE
$applications = $user->applications();
header('Content-Type: text/xml; charset=utf-8');
$dom = new DomDocument('1.0', 'utf-8');
$user_node = $dom->createElement('user');
$user_node->setAttribute('login', $user->getAttribute('login'));
foreach ($applications as $application) {
$application_node = $dom->createElement('application');
$application_node->setAttribute('id', $application->getAttribute('id'));
$application_node->setAttribute('name', $application->getAttribute('name'));
$application_node->setAttribute('description', $application->getAttribute('description'));
foreach ($application->getMimeTypes() as $mimetype) {
$mimetype_node = $dom->createElement('mime');
$mimetype_node->setAttribute('type', $mimetype);
$application_node->appendChild($mimetype_node);
}
$user_node->appendChild($application_node);
}
$dom->appendChild($user_node);
echo $dom->saveXML();
exit(0);
我看到你正在檢查內容類型。聽起來就像你可能正在獲取包含頭文件的文件,這將使其成爲一個無效的XML。如果沒有,你需要發佈更多的代碼,包括curl部分。 –
我粘貼了一些額外的代碼! –