我需要帮助从我的PHP代码创建一个xml文件。我创建了一个函数来形成我想要的xml,但我不知道如何将形成的xml保存在文件中。
另外,如果您还可以告诉我,下次我如何更新已创建的xml文件。
我的代码如下所示:
public function create_xml()
{
$output = "<?xml version=\"1.0\" encoding=\"utf-8\" ?> ";
$output .= "<data>";
$output .= "<news>";
$news_articles = new C7_News();
$db = C7_Bootstrap::getDb();
$foxsport_sql = "SELECT headline, link FROM c7_news
WHERE source = 'foxsports' AND category = 'Breaking News'
LIMIT 0,4";
$foxsport_rowset = $db->fetchAll($foxsport_sql);
$data = array();
foreach($foxsport_rowset as $foxsport_row)
{
$output .= "<title>";
$output .= "<description>";
$output .= "<![CDATA[";
$output .= $foxsport_row['headline'];
$output .= "]]>";
$output .= "<link>";
$output .= $foxsport_row['link'];
$output .= "</link>";
$output .= "</title>";
}
$output .= "</news>";
$output .= "</data>";
}
我可能也做错了,请告诉我创建xml的最佳方法。
谢谢 Zeeshan
答案 0 :(得分:2)
我将在此处添加更多信息。
另外,如果您还可以告诉我,下次我如何更新已创建的xml文件。
你应该解析 XML 以便更新,SimpleXml extension提供并且易于使用 API 来解析写作 XML 文件。
我可能也做错了,请告诉我创建xml的最佳方法。
有很多方法可以做到这一点,但我更喜欢在编写 HTML 或 XML 时使用 PHP 作为“模板引擎”(或任何* ML 就此而言。)
<?php echo "<?xml version=\"1.0\" encoding=\"utf-8\" ?> " ?>
<?php
$news_articles = new C7_News();
$db = C7_Bootstrap::getDb();
$foxsport_sql = "SELECT headline, link FROM c7_news
WHERE source = 'foxsports' AND category = 'Breaking News'
LIMIT 0,4";
$foxsport_rowset = $db->fetchAll($foxsport_sql);
?>
<data>
<news>
<?php foreach($foxsport_rowset as $foxsport_row):
<title>
<description>
<![CDATA[
<?php echo $foxsport_row['headline'] ?>
]]>
</description>
<link><?php echo $foxsport_row['link']</link>
</title>
<?php endforeach; ?>
</news>
</data>
这将输出 XML 并且更容易阅读
但我不知道如何将形成的xml保存在文件中。
至于如何将其保存到文件中,您应该有另一个 PHP 文件到include
这个“模板”(假设模板名为xml_template.php
):
ob_start();
include dirname(__FILE__) . DIRECTORY_SEPARATOR . 'xml_template.php';
$output = ob_get_clean();
然后您再次在$output
变量上添加 XML 字符串,并且可以按 Vlad.P 所述的方式执行:
// If file is missing, it will create it.
$file = fopen("file.xml", "w");
fwrite($file, $output);
fclose($file);
答案 1 :(得分:0)
在功能结束时添加此内容。
// If file is missing, it will create it.
$file = fopen("file.xml", "w");
fwrite($file, $output);
fclose($file);
答案 2 :(得分:0)
使用
file_put_contents( $file, $output );
您可能希望传入文件路径的参数:
$stream->create_xml( $file );
或者说应该由另一个方法/类处理,例如
$stream->create_xml();
$stream->save_xml( $file );