PHP:仅在变量包含来自 XML 的数据后写入文件


PHP: Write to file only after the variable contains data from the XML

我对PHP很陌生。我正在尝试:

  1. 将数据从 XML 文件写入变量;
  2. 将变量中的数据写入文件;

文件为空。我认为这与XML文件解析期间的延迟有关。变量已创建,但它为空,这就是文件为空的原因。是否有延迟或某种解决方法?

代码:

$xml = simplexml_load_file("someXMLFileWhichTakesTimeToLoad.xml") or die ("Error: Cannot create object");
$myfile = fopen("eeFuelPrice.txt", "w") or die("Unable to open file!");
print_r($xml);
fwrite($myfile, $xml);
print_r("successfully wrote file");

提前感谢!

我假设您想将XML作为XML而不是字符串使用...

注意:simplexml_load_file()是一个阻塞函数:当它返回时,文件已经解析。

您需要一些错误处理:您正在打印$xml所以我假设打印了您期望的数据。 fwrite()返回写入的字节数 - 它返回什么?如果它是零,(它可能是),那么这就是你的问题。

您可以改用类似 asXML() 的内容将 XML 对象打印到文件中。 fwrite()用于将字节(字符串)写入文件。

你应该使用file_get_contents()file_put_contents()函数。

$xml = "someXMLFileWhichTakesTimeToLoad.xml";
$myfile = "eeFuelPrice.txt";
$content = file_get_contents($xml);
file_put_contents($myfile, $content);

您遇到的问题是simplexml_load_file返回一个对象(请参阅文档) 不能使用 fwrite 将对象直接写入文件:

int fwrite ( resource $handle , string $string [, int $length ] )

如果您尝试做的只是获取一个 XML 文件的内容并将其添加到文本文件中,则只需使用 file_get_contents 读取内容;它返回一个字符串值而不是一个对象。