我有一个基于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脚本解析它?