在php页面中,通过下面的sql
select *  from base_stories order by dateposted desc limit 100; 
可以得到 表中100记录的字段:标题,内容 等.
现要把这些标题,内容等放到一个news.xml中去:
news.xml 如下:
  <?xml version="1.0" encoding="GB2312" ?> 
  <document>
  <webSite>http://899.cn/</webSite> 
  <webMaster>[email protected]</webMaster> 
  <updatePeri>15</updatePeri>   <item>
  <link>http://899.cn/xinwen/1392.html</link> 
  <title>房价急升质量存疑 迷样楼市如何智慧买房?</title> 
  <text>楼盘</text> 
  <image>../upload/newsPic/pic/20090710093930385049975.jpg</image> 
  <category>全国地产新闻</category> 
  <pubDate>2009-07-10 09:55:20</pubDate> 
  </item>  </document>
其中 一个 item为一条新闻的有关内容,item中的link title text image category pubDate
都可从 base_stories表中取到值,
100条记录,就是要在此xml中生成100个item,
请问这功能怎么实现,

解决方案 »

  1.   

    首先通过SQL语句得到数据源,然后再将这些数据循环在XML中显示,如下:<?php
    $data = "数据源";
    function getxml($data) {
        $XML = '<?xml version="1.0" encoding="GB2312" ?>';
        $XML .= '<document>';
        $XML .='<webSite>http://899.cn/ </webSite>';
        $XML .='<webMaster>[email protected] </webMaster>';
        $XML .='<updatePeri>15 </updatePeri>';
        foreach($data as $row){
            $XML .="<item>";
            $XML .="<link>".$row['link']."</link>";
            $XML .="<title>".$row['title']."</title>";
            $XML .="<text>".$row['text']."</text>";
            $XML .="<image>".$row['image']."</image>";
            $XML .="<category>".$row['category']."</category>";
            $XML .="<pubDate>".$row['pubDate']."</pubDate>";
            $XML .="<item>";
        }
        $XML .='</document>';
        return $XML;
    }
    ?>
    然后在news.xml中调用这个函数就可以了。
      

  2.   

        自己看着改吧,加上一个,foreach()就OK了!    
        $doc=new DOMDocument('1.0');
    @$doc->load("../home/data.xml");
    $data=$doc->getElementsByTagName("data")->item(0);//
    $item=$doc->createElement('item');
    $username=$doc->createElement("username",utf8_encode($nick));
    $item->appendChild($username);
    $content   = $doc->createElement("content",utf8_encode($msg));
    $item->appendChild($content);
    $data->appendChild($item);

    $doc->save('data.xml');
      

  3.   

    谢谢大家,
    二楼的我看明白了,可最后一步,“然后在news.xml中调用这个函数就可以了”,xml文件中怎么调php函数呀?
    三楼的 我还没看明白,
      

  4.   

    修改:
    谢谢大家, 
    1楼的我看明白了,可最后一步,“然后在news.xml中调用这个函数就可以了”,xml文件中怎么调php函数呀? 
    2楼的 我还没看明白, 
      

  5.   

    如果想方便的话,可以直接使用file_put_content函数,如下:
    <?php
    $data = "数据源";
    function getxml($data) {
        $XML = ' <?xml version="1.0" encoding="GB2312" ?>';
        $XML .= ' <document>';
        $XML .=' <webSite>http://899.cn/ </webSite>';
        $XML .=' <webMaster>[email protected] </webMaster>';
        $XML .=' <updatePeri>15 </updatePeri>';
        foreach($data as $row){
            $XML .=" <item>";
            $XML .=" <link>".$row['link']." </link>";
            $XML .=" <title>".$row['title']." </title>";
            $XML .=" <text>".$row['text']." </text>";
            $XML .=" <image>".$row['image']." </image>";
            $XML .=" <category>".$row['category']." </category>";
            $XML .=" <pubDate>".$row['pubDate']." </pubDate>";
            $XML .=" <item>";
        }
        $XML .=' </document>';
        return $XML;
    }
    $dd = getxml($data);
    file_put_contents('news.xml', $dd);
    ?> 
      

  6.   

    回 5楼,
    我在
    $dd = getxml($data); 
    file_put_contents('news.xml', $dd); 二行前 写echo $xml可输出很多数据,
    可用上 $dd = getxml($data); 
    file_put_contents('news.xml', $dd); 这二行,没有反映,news.xml中也是空了,没有数据,
    怎么解决?
      

  7.   

    <item>写错了,应该改成</item>
      

  8.   

    回 7 楼,还不是这个item,
    应该是修改 
            $XML .=" <item>"; 
        } 
        $XML .=' </document>';
    这个<item>吧
      

  9.   

    下面是我的测试数据,你看看,能不能运行成功,我这是可以成功的。
    <?php
    $data = array('link'=>'1','title'=>'tt','text'=>'dd','image'=>'null','category'=>'test','pubDate'=>'ddddd');
    function getxml($data) {
        $XML = '<?xml version="1.0" encoding="GB2312" ?>';
        $XML .= '<document>';
        $XML .='<webSite>http://899.cn/ </webSite>';
        $XML .='<webMaster>[email protected] </webMaster>';
        $XML .='<updatePeri>15 </updatePeri>';
        foreach($data as $row){
            $XML .=" <item>";
            $XML .=" <link>".$row['link']." </link>";
            $XML .=" <title>".$row['title']." </title>";
            $XML .=" <text>".$row['text']." </text>";
            $XML .=" <image>".$row['image']." </image>";
            $XML .=" <category>".$row['category']." </category>";
            $XML .=" <pubDate>".$row['pubDate']." </pubDate>";
            $XML .=" </item>";
        }
        $XML .=' </document>';
        return $XML;
    }
    $dd = getxml($data);
    file_put_contents('news.xml', $dd);
    ?>
      

  10.   

    回九楼,你的测试,在我电脑也 不行,news.xml就是空的,
    我是把 getxml($data)放在 newsXml.php 中,此文件与news.xml同一目录
      

  11.   

    九楼的,news.xml文件一直是空的哦,
    还有,我用你写的代码测试时,输出时,只有内容,数据库中查出来的内容,没有 xml的样式,
      

  12.   

    <?php 
    $data = array('link'=>'1','title'=>'tt','text'=>'dd','image'=>'null','category'=>'test','pubDate'=>'ddddd'); 
    function getxml($data) { 
        $XML = ' <?xml version="1.0" encoding="GB2312" ?>'; 
        $XML .= ' <document>'; 
        $XML .=' <webSite>http://899.cn/ </webSite>'; 
        $XML .=' <webMaster>[email protected] </webMaster>'; 
        $XML .=' <updatePeri>15 </updatePeri>'; 
        foreach($data as $row){ 
            $XML .=" <item>"; 
            $XML .=" <link>".$row['link']." </link>"; 
            $XML .=" <title>".$row['title']." </title>"; 
            $XML .=" <text>".$row['text']." </text>"; 
            $XML .=" <image>".$row['image']." </image>"; 
            $XML .=" <category>".$row['category']." </category>"; 
            $XML .=" <pubDate>".$row['pubDate']." </pubDate>"; 
            $XML .=" </item>"; 
        } 
        $XML .=' </document>'; 
        return $XML; 

    $dd = getxml($data); 
    echo $dd;
    //file_put_contents('news.xml', $dd); 
    ?>
    看看你那边输出是什么样的,把结果贴出来下,
      

  13.   

    回九楼,
    我在本地测试 9 楼的代码,完全是对的,
    可放到 服务器中,就不行,
    服务器是 linux 
      

  14.   

    这很简单 关键是用到了文件写函数 file_put_contents
    如果不能用这个函数 可以用下面的函数代替$file="test.xml";
    $fp=fopen($file,"w");
    $date="XML字符串";
    fputs($fp,$date);
    fclose($fp);