创建一个由Dom文档解释的xml字符串

时间:2014-09-11 18:29:29

标签: php xml parsing domdocument

我有一个使用fopen()file_get_contents()通过FTP获取的XML文件。我需要将其上传到带有$dom->loadXML()的DOM文档,但这只接受以下格式的XML字符串:

   <?php
 $string = <<<XML
    <?xml version='1.0'?> 
    <document>
     <title>/title>
     <from></from>
     <to></to>
     <body>

     </body>
    </document>
    XML;
?>

如何将我获取的ftp文件转换为此类型的字符串?

1 个答案:

答案 0 :(得分:0)

将文件保存在特定文件夹中,然后使用simplexml_load_string。检查你的XML,看起来它有问题

$file_url = '';   //this is your file URL 

//if you are getting the file from the internet, it is best to use cURL to fetch the data, you can add additional code to control it. Otherwise if it is inside your project just use file_get_contents.

$xml_string = file_get_contents($file_url);

$xml   = simplexml_load_string($xml_string);

根据您的评论更新答案

你需要考虑:

  • 文件的大小是多少?(9MB)

如果您的服务器具有高且无限的带宽,那么9MB应该不是问题,但是如果它可以支持高速上传,则需要考虑XML所在的服务器,否则您的页面可能加载速度非常慢。

  • 您多久访问一次该文件?

如果您一直在访问所有页面,最好下载它,但请注意文件中的数据是否会不时变化。

  • 文件中的数据会发生变化吗?

如果数据不经常更改,最好下载并将其另存为项目中的文件。否则,你可能想创建一个php脚本来下载文件,创建一个shell脚本来运行php脚本,然后创建一个CRON JOB来获取更新的文件,这是非常先进的。

我记得当我开发我之前项目的一部分时,因为我需要在交易页面呈现时从XML(448KB)加载所有机场,并且因为世界各地的机场列表太长,我下载了机场列表,并将其保存在我们的服务器中。我没有制作任何额外的PHP脚本和shell脚本来检查数据内容,因为每当用户无法找到相应的机场时,他们就可以报告它,开发人员可以手动更新它,因为机场列表每天都不会更改

根据您的评论进行更新

如果是这种情况我会推荐什么:

  • 您可以创建一个表格(更简单),也可以创建一个文件,用于存储当天是否已检索到XML的信息,
  • 当页面加载时,检查表/文件是否已经检索到今天的XML,如果尚未检索到XML,获取XML文件,将其保存在服务器中,然后更新表/文件以便它将表明它已更新。 您需要考虑可能有多个并发用户或做同样的事情,因此您需要考虑这一点并添加其他确认/通知
  • 在您的服务器中保存文件的最新副本后,只需进行常规解析。
  • 完成页面加载

您可能想要澄清您的问题并列出它们。