使用PHP xmlwriter在xml文件中添加多个数据 [英] add multiple data in xml file using PHP xmlwriter

查看:119
本文介绍了使用PHP xmlwriter在xml文件中添加多个数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要使用PHP xmlwriterxml文件中每月添加文章:

I need to add article for each month in xml file using PHP xmlwriter:

$sql = "SELECT *,YEAR(FROM_UNIXTIME(timestamp)) AS YEAR, 
                MONTH(FROM_UNIXTIME(timestamp)) AS MONTH 
         FROM ".NEWS_ARTICLES." GROUP BY YEAR, MONTH ORDER BY YEAR DESC, MONTH ";
$newsdata = DataAccess::Fetch($sql);

foreach($newsdata AS $news){
    $writer->openURI('./cache/xmls/posts-'.$news['MONTH'].'-'.$news['YEAR'].'.xml');  
    $writer->startDocument('1.0','UTF-8');  
    $writer->setIndent(4);
    $writer->startElement('urlset');
    $writer->writeAttribute('xmlns', $xmlns);
    $writer->startElement('url');   
    $writer->writeElement('loc',$news['title']);  
    $writer->endElement();  
    $writer->endElement(); 
    $writer->endDocument();   
    $writer->flush();
}

这对我有用,并且每个月都生成.xml文件,但是没有添加每个月的所有文章标题,而且我在每个月文件中仅看到one标题!如何将每个月的所有文章添加到xml文件中?

This worked For me and generate .xml file for each month But not add all articles title for each month and I see only one title in each month file!! how do can I add all articles for each month in xml files?

我认为我的问题出在循环中!

I think my problem is with loop!!!

结果:posts-5-2015.xml

<url>
  <loc>title</loc>
</url>

实际上,我有5篇文章,并且需要:

In Really I have 5 articles and need to:

结果:posts-5-2015.xml

<url>
  <loc>title</loc>
</url>
<url>
  <loc>title2</loc>
</url>
<url>
  <loc>title3</loc>
</url>
<url>
  <loc>title4</loc>
</url>
<url>
  <loc>title5</loc>
</url>

print_r($newsdata)结果:注意:这对于大型数据库很简单,仅适用于模式

print_r($newsdata) result: NOTE: this is simple Of large DB and only for schema

Array
(
    [0] => Array
        (
            [id] => 243
            [title] => test2
            [story] => desc2
            [timestamp] => 1442389680
            [update_time] => 1442389522
            [YEAR] => 2015
            [MONTH] => 9
        )

    [1] => Array
        (
            [id] => 242
            [title] => test1
            [story] => desc
            [timestamp] => 1421230680
            [update_time] => 1441026399
            [YEAR] => 2015
            [MONTH] => 1
        )
    [2] => Array
        (
            [id] => 244
            [title] => test3
            [story] => desc3
            [timestamp] => 1421230680
            [update_time] => 1441026399
            [YEAR] => 2015
            [MONTH] => 5
        )
    [3] => Array
        (
            [id] => 245
            [title] => test4
            [story] => desc4
            [timestamp] => 1421230680
            [update_time] => 1441026399
            [YEAR] => 2015
            [MONTH] => 5
        )
    [4] => Array
        (
            [id] => 246
            [title] => test5
            [story] => desc5
            [timestamp] => 1421230680
            [update_time] => 1441026399
            [YEAR] => 2015
            [MONTH] => 5
        )
    [5] => Array
        (
            [id] => 247
            [title] => test6
            [story] => desc6
            [timestamp] => 1421230680
            [update_time] => 1441026399
            [YEAR] => 2015
            [MONTH] => 5
        )
    [6] => Array
        (
            [id] => 248
            [title] => test7
            [story] => desc7
            [timestamp] => 1421230680
            [update_time] => 1441026399
            [YEAR] => 2015
            [MONTH] => 5
        )
)

推荐答案

您将在每个循环中覆盖XML.考虑以root开头文档,并在foreach循环之外关闭文档:

You are overwriting your XML with each loop. Consider starting document with root and closing document outside the foreach loop:

$writer->openURI('./cache/xmls/posts-'.$news['MONTH'].'-'.$news['YEAR'].'.xml');
$writer->startDocument('1.0','UTF-8'); 
$writer->setIndent(4); 
$writer->startElement('urlset');

foreach ($newsdata as $news){    
  $writer->startElement('url'); 
  $writer->writeElement('loc',$news['title']); 
  $writer->endElement();
}

$writer->endElement(); 
$writer->endDocument(); 
$writer->flush();

这篇关于使用PHP xmlwriter在xml文件中添加多个数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆