【问题标题】:PHP: read a php url as xml and parse itPHP:将 php url 读取为 xml 并解析它
【发布时间】:2015-04-16 19:23:42
【问题描述】:

我有一个类似http://somedomain.com/frieventexport.php 的网址,如果我查看该网站的源代码,该网址的内容是一个普通的 XML 结构:

如何解析这个 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);
       }
    }

?>

【问题讨论】:

  • $response_xml_data 变量中是否有任何数据?有时在 file_get_contents 中不允许读取 URL。请检查您的 ini 设置。

标签: php xml


【解决方案1】:

我认为最好的选择之一是使用 CURL 从 url 获取原始 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 中使用 &lt;![CDATA[]&gt; 标记。请阅读以下内容:

更多关于 DOMDocument 和使用的信息

【讨论】:

  • 谢谢,var_dump($document); 给了我这个s3.amazonaws.com/f.cl.ly/items/3V3Y2P3L41401Q102J12/… ...我现在如何使用那个 xml。如何循环遍历元素并读取特定标签?
  • 我建议您查看 DOMDocument 文档。我会在我的回答中链接到它。
  • 您通过链接提供的文档内容非常广泛,在我看来并不能帮助他解决他对 null var_dump 的困惑
  • @KurtLeadley 可能是这样,但问题是“如何解析这个 URL 并在 PHP 中使用它?”。我给了他们比要求的更多。此外,文档是在他询问有关链接的更多信息后添加的,请参阅上面的第一条评论。
【解决方案2】:

file_get_contents() 如果这是共享主机,通常会被禁用,如果不是,您可以在 php.ini 中设置allow_url_fopen(但要注意安全风险)。您可以使用php_info()var_dump(ini_get('allow_url_fopen')) 检查此设置以显示是否允许。

如果以上都做不到,可以使用 CURL 获取外部内容

【讨论】:

【解决方案3】:

尝试以下方法:

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

【讨论】:

    【解决方案4】:

    试试这个:

    $livescore_data = new SimpleXMLElement($file);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-25
      • 1970-01-01
      • 2018-06-23
      • 1970-01-01
      • 1970-01-01
      • 2012-05-13
      相关资源
      最近更新 更多