PHP—获取一个在另一个PHP文件中回送的XML文件,然后将回送的XML输出保存到服务器
我有一个PHP文件,名为PHP—获取一个在另一个PHP文件中回送的XML文件,然后将回送的XML输出保存到服务器,php,xml,file-io,Php,Xml,File Io,我有一个PHP文件,名为xml_generate.PHP,它创建了一个DOM对象,并在最后回显它 我们可以这样说: header("Content-type: text/xml"); $dom = new DOMDocument('1.0'); $node = $dom->createElement('foo'); $root = $dom->appendChild($node); $node = $dom->createElement('bar'); $new_node
xml_generate.PHP
,它创建了一个DOM对象,并在最后回显它
我们可以这样说:
header("Content-type: text/xml");
$dom = new DOMDocument('1.0');
$node = $dom->createElement('foo');
$root = $dom->appendChild($node);
$node = $dom->createElement('bar');
$new_node = $root->appendChild($node);
echo $dom->saveXML();
我从jQuery访问这个文件,并在客户端显示内容。实际的xml_generate.php从数据库动态创建DOM
但是,我希望有一个PHP文件,该文件将创建由generate_XML.PHP生成的XML的备份,并将其保存到服务器
因此,我需要以某种方式访问该XML文档(在XML_generate.php中动态创建的文档)
我尝试了几个不同的函数从XML_generate.php获取XML,例如:
$xml=http\u get('xml\u generate.php')代码>,
$xml=file\u get\u contents('xml\u generate.php')代码>
还包括第一个文件(include('xml_generate.php')
,然后尝试访问该文件中的$dom
变量)
但我似乎不能把它弄对。有什么好办法吗?您可以使用,它将缓冲发送到输出流的任何数据,然后在包含脚本后检索这些数据:
ob_start();
include "xml_generate.php";
$xml = ob_get_contents();
ob_end_clean();
确保捕获错误@“xml_generate.php”,否则这些错误也会被缓冲,最终导致无效的xml备份。为什么不从generate_xml.php
脚本创建备份呢?因为备份将独立于调用xml_generate.php为客户端提供数据而进行;我不希望每次请求xml_generate.php时都创建备份。我想我可以根据请求中的一个参数来设置功能,然后让备份功能使用xml\u generate.php?backup=true
,或者类似的方法来调用它,这将是一个更简单的解决方案,而不是您正在尝试的。您可以将所有功能保存在一个文件中。很酷,这很有效。谢谢虽然我仍然很好奇为什么我不能用另一种方法得到它,你当然可以,如果你好奇的话,我可以在下面回答,但是你想出了一个更好的方法来实现它。不过,我似乎仍然无法从中获得数据。我已经按照您的建议完成了上面的代码,然后创建一个新的DOM($doc=new DOMDocument();
),从输出缓冲区加载XML($doc->loadXML($XML);
),然后尝试回显该XML(回显$doc->saveXML();
,这样我就可以看到它实际上已经完成了)。它只是给了我一个空的XML文件。我是否误解了从中获取实际XML的方法?我还尝试过使用load($XML)
,以及echo($XML)
和print\r($XML)
仅用于yuks,它们都不会输出任何东西,尽管您不能以这种方式传递参数(building=300)。您必须使用两个脚本都知道的变量-备份脚本可能会设置“$building=300;”,而xml脚本在(!isset($\u GET[“building”])(至少我猜您是这样做的)的情况下使用它。此外,还应该包括引发警告的变量,最好激活严格的错误报告来调试代码:error\u reporting(E\u ALL);