PHP:将php url作为xml读取并解析它

时间:2015-02-16 10:00:38

标签: php xml

我有一个像这个http://somedomain.com/frieventexport.php的网址,如果我查看网站的源代码,这个网址的内容是纯XML结构:

enter image description here

如何解析此URL并在PHP中使用它? 这个脚本给我一个错误......“加载XML时出错”。

<?php

    $xml_url = "http://somedomain.com/frieventexport.php";

    if (($response_xml_data = file_get_contents($xml_url))===false){
        echo "Error fetching XML\n";
    } else {
       libxml_use_internal_errors(true);
       $data = simplexml_load_string($response_xml_data);
       if (!$data) {
           echo "Error loading XML\n";
           foreach(libxml_get_errors() as $error) {
               echo "\t", $error->message;
           }
       } else {
          print_r($data);
       }
    }

?>

4 个答案:

答案 0 :(得分:1)

如果这是共享主机,则通常禁用

file_get_contents(),否则您可以在php.ini中设置allow_url_fopen(但要注意安全风险)。您可以使用php_info()var_dump(ini_get('allow_url_fopen'))检查此设置,以显示是否允许。

如果您无法执行上述操作,则可以使用CURL获取外部内容

答案 1 :(得分:1)

我认为最好的选择之一是使用CURL从网址获取原始XML数据:

$curl = curl_init();
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $curl, CURLOPT_URL, "http://somedomain.com/frieventexport.php" );

$xml = curl_exec( $curl );
curl_close( $curl );

然后,您可以使用DOMDocument来解析xml:

$document = new DOMDocument;
$document->loadXML( $xml );

我还建议在XML中使用<![CDATA[]>标记。请阅读以下内容:

有关DOMDocument和用法的更多信息

答案 2 :(得分:0)

尝试以下方法:

$url = 'xml-file.xml';
$xml = simplexml_load_file($url);
print_r($xml);

答案 3 :(得分:-1)

试试这个:

$livescore_data = new SimpleXMLElement($file);