从php创建xml文件时出现问题

时间:2010-12-01 02:05:13

标签: php xml

我需要帮助从我的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

3 个答案:

答案 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 );