如何将Zend生成的XML文件加载到PHP脚本中?

时间:2012-10-02 16:44:01

标签: php xml zend-framework simplexml

我有一个基于Zend框架的内容管理系统(Omeka)。网站上的页面有不同的输出选项,如XML和JSON。

我能够验证网站的输出。当我将XML文件保存为服务器上的.xml文件时,我的代码可以加载它。但是当我引用脚本生成的XML文件的URL时,PHP会返回错误。虽然它返回404,但我可以将我尝试加载到我浏览器中的URL放入,我将看到正确的XML页面。

我正在加载的脚本:http://lw4.gc.cuny.edu/_dev_push/archive/items/show/1?output=omeka-xml

以下是我用来尝试加载文件的代码。我只是尝试了一系列方法,看看它们是否有效。如果可以的话,我更喜欢使用SimpleXML方法:

    $xml = simplexml_load_file('http://lw4.gc.cuny.edu/_dev_push/archive/items/show/id/1?output=omeka-xml');
    $doc = new DOMDocument();
    $doc->loadXML('http://lw4.gc.cuny.edu/_dev_push/archive/items/show/id/1?output=omeka-xml');
    echo $doc->saveXML();

    $str = file_get_contents('http://lw4.gc.cuny.edu/_dev_push/archive/items/show/id/1?output=omeka-xml');
    echo $str; 

以下是我输入动态生成的XML页面的确切URL时我的脚本返回的错误。

  

警告:   使用simplexml_load_file(http://lw4.gc.cuny.edu/_dev_push/archive/items/show/id/1?output=omeka-xml):   无法打开流:HTTP请求失败!找不到HTTP / 1.1 404   /var/www/html/_dev_push/wp-content/plugins/omekafeed/omekafeed.php on   第122行警告:simplexml_load_file():I / O警告:加载失败   外部实体   " HTTP://lw4.gc.cuny.edu/_dev_push/archive/items/show/id/1输出= omeka-XML"   在/var/www/html/_dev_push/wp-content/plugins/omekafeed/omekafeed.php   第122行警告:DOMDocument :: loadXML():期望开始标记,'<'   在实体中找不到,行:1英寸   /var/www/html/_dev_push/wp-content/plugins/omekafeed/omekafeed.php on   第124行警告:   的file_get_contents(http://lw4.gc.cuny.edu/_dev_push/archive/items/show/id/1?output=omeka-xml):   无法打开流:HTTP请求失败!找不到HTTP / 1.1 404   /var/www/html/_dev_push/wp-content/plugins/omekafeed/omekafeed.php on   第127行

当我以这种方式指定URL时,脚本会加载。请注意,在这种情况下,text3.xml不会使用脚本动态生成,但它与前一个示例中调用的xml文件相同。

    $xml = simplexml_load_file('http://lw4.gc.cuny.edu/_dev_push/archive/test3.xml');
    $doc = new DOMDocument();
    $doc->loadXML('http://lw4.gc.cuny.edu/_dev_push/archive/test3.xml');
    echo $doc->saveXML();

    $str = file_get_contents('http://lw4.gc.cuny.edu/_dev_push/archive/test3.xml');
    echo $str;

没有密码保护我正在使用的网站部分。我在同一个域工作,虽然值得指出我试图将XML内容从一个单独的内容管理系统拉到另一个内容[在第一个子目录中一]。

当我指定一个硬编码但相同的XML文件时,我可以让这些脚本工作,我怀疑是Zend生成的动态XML文件是问题所在,但我无法做到这一点。找到对此功能的任何引用,或如何更改它。

您如何看待,我可以做些什么来加载此内容,以便我可以使用我的PHP脚本解析它?

1 个答案:

答案 0 :(得分:0)

  

我有一个内容管理系统(Omeka),它建立在Zend上   框架。网站上的页面有不同的输出   XML和JSON等选项。

阅读文档,看看您是否可以使用REST请求了解如何访问这些资源。如果可以,那么您可以将返回的XML或JSON放入您需要的任何形式。

否则,您可能需要使用cURL()等内容抓取页面,然后将结果放入所需的表单中。