simplexml_import_dom - 不起作用

时间:2009-08-25 08:22:19

标签: php

if (file_exists('http://something_from_a_url.xml')) {
    $xml = simplexml_import_dom('http://something_from_a_url.xml');

    print_r($xml);
} else {
    exit('Failed to open xml file.');
}

当我执行此代码时,它说无法打开,我无法理解为什么......

6 个答案:

答案 0 :(得分:1)

simplexml_import_dom采用DOM节点,而不是URL。您应该使用simplexml_load_file intead:

$xml = simplexml_load_file('http://something_from_a_url.xml');
print_r($xml);

答案 1 :(得分:0)

file_exists()不适用于网址。这甚至对URL都没有意义。

simplexml_import_dom()旨在将DOM节点转换为SimpleXML节点。它期望将DOM节点的实例作为参数。您正在传递URL。

也许你想:

$simplexml = simplexml_load_string(file_get_contents($url));

答案 2 :(得分:0)

检查:

a)simplexml_import_dom的参数是DOMNode。

b)你在php.ini中启用了allow_url_fopen

作为替代方案,您可以尝试将[simplexml_load_file] [3]与URL一起使用,看看发生了什么。

额外链接: php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen

php.net/manual/en/function.simplexml-load-file.php

答案 3 :(得分:0)

一般情况下设置禁止此。

您可以尝试使用此方法来验证远程文件的存在。

if (fopen($url, "r")) {
    echo "File Exists";
} else {
    echo "Can't Connect to File";
}

答案 4 :(得分:0)

什么是

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

$contents = file_get_contents('http://something_from_a_url.xml');
echo '<div>Debug: len(contents)=', strlen($contents), "</div>\n";

libxml_use_internal_errors(true);
libxml_clear_errors();
$xml = new SimpleXMLElement($contents);

foreach( libxml_get_errors() as $error ) {
  echo 'error: ', $error->$message, "<br />\n";
}

打印?

答案 5 :(得分:0)

它反过来工作,不知道为什么 - 但解决了