1

我有一个基于 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 Not Found in /var/www/html/_dev_push/wp-content/plugins/omekafeed/omekafeed.php 第 122 行警告:simplexml_load_file():I/O 警告:未能加载外部实体“http:// /lw4.gc.cuny.edu/_dev_push/archive/items/show/id/1?output=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 中的第 124 行警告:file_get_contents(http://lw4.gc.cuny.edu/_dev_push/archive/items/show/id/1?output=omeka-xml):打开流失败:HTTP请求失败!HTTP/1。

当我以这种方式指定 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 文件时,我可以让这些脚本工作,我怀疑动态 XML 文件是由 Zend 生成的,这是问题所在,但我找不到任何参考此功能,或如何更改它。

你怎么看,我能做些什么来加载这个内容,以便我可以用我的 PHP 脚本解析它?

4

1 回答 1

0

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

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

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

于 2012-10-03T10:30:39.007 回答