想从mysql数据库里读数据,然后写如下xml文件:<?xml version="1.0"?>
<thumbnails>
<thumbnail filename="136603258275783.jpg" label="测试" url="http://v.youku.com/v_show/id_XNTQxNzc4ODg.html"/>
<thumbnail filename="136421346392337.jpg" label="测试" url="http://v.youku.com/v_show/id_XNTI5NjEwMzM.html"/>
<thumbnail filename="136421349294580.jpg" label="测试" url="http://v.youku.com/v_show/id_XNTI5Njk2MzQ.html"/>
<thumbnail filename="136421354756516.jpg" label="测试" url="http://v.youku.com/v_show/id_XNTI5Njg1OTE.html"/>
<thumbnail filename="136421359617912.jpg" label="测试" url="http://v.youku.com/v_show/id_XNTI5NjcyMDM2.html"/>
<thumbnail filename="136421362461256.jpg" label="测试" url="http://v.youku.com/v_show/id_XNTI5NjAwNzQ.html"/>
<thumbnail filename="136421365264950.jpg" label="测试" url="http://v.youku.com/v_show/id_XNTI5NTg4MDI.html"/>
<thumbnail filename="136603894126951.jpg" label="微笑" url="http://v.youku.com/v_show/id_XNTM4NjQyNTQw.html"/>
</thumbnails>
该如何操作呢?我尝试过如下方法:include("conn.php");
include("crop.php");mysql_select_db('hdm0910283_db', $lnk) or die ('Can\'t use hdm0910283_db : ' . mysql_error());
mysql_query("SET NAMES gbk");
$sql="select * from video";
$query=mysql_query($sql);
 
$str="<?xml version=\"1.0\"?>\r<thumbnails>";
while ($row = mysql_fetch_array($query)) {
//echo $row[imgname];
$imageurl="../workshow/images/".$row[imgname];
    cutphoto("$imageurl","$imageurl",200,113);
$str=$str."\r<thumbnail filename=\"".$row[imgname]."\" label=\"".$row[title]."\" url=\"".$row[url]. "\"/>";
}
$str=$str."\r</thumbnails>";//header("content-type:text/html; charset=utf-8");    //指定PHP使用UTF-8编码
$fp = fopen("../workshow/xml/thumbnails.xml", "w");                      //新建xml文件
fwrite($fp, $str);                                     //写入-------xml文件
fclose($fp)但写出来的xml文件样式看着是没问题,但用flash读取的时候就有问题,每次都要手动修改一下文件,比如加一个回车再删除,然后再保存文件就可以了,困惑啊。各位大侠有什么别的好办法吗?
另外,我还用过如下方法:include("conn.php");
include("crop.php");mysql_select_db('hdm0910283_db', $lnk) or die ('Can\'t use hdm0910283_db : ' . mysql_error());
mysql_query("SET NAMES gbk");
$sql="select * from video";
$query=mysql_query($sql);
$str="<thumbnails>";
while ($row = mysql_fetch_array($query)) {
//echo $row[imgname];
$imageurl="../workshow/images/".$row[imgname];
    cutphoto("$imageurl","$imageurl",200,113);
$str=$str."<thumbnail filename=\"".$row[imgname]."\" label=\"".$row[title]."\" url=\"".$row[url]. "\"/>";
//echo $row[imgname];
}
$str=$str."</thumbnails>";
header("content-type:text/html; charset=utf-8");    //指定PHP使用UTF-8编码
$xml = simplexml_load_file("../workshow/xml/thumbnails.xml");        //读取xml文件
$str=$xml->asXML();                              //标准化$xml
$fp = fopen("../workshow/xml/thumbnails.xml", "w");                      //新建xml文件
fputs($fp, $str);                                     //写入-------xml文件
fclose($fp);但每次执行后,xml文件没有任何改变谢谢各位,帮帮忙

解决方案 »

  1.   

    你的XML文件内容是GBK编码的,为什么要指定是UTF-8
    常识这样标识XML头 $str="<?xml version=\"1.0\" encoding=\"GB2312\" ?>\r<thumbnails>";
      

  2.   

    不行,用第一种方法写的文件,flash读的时候有问题
      

  3.   

    直接写个php里面按格式混编<?xml version="1.0"?>
    <thumbnails>
    <?php  链接数据库?>
    <?php foreach(xx in xx){?>
    <thumbnail filename="<?php echo xxx?>" label="微笑" url="http://v.youku.com/v_show/id_XNTM4NjQyNTQw.html"/>
    <?php }?>
    </thumbnails>然后在在你刚才的php里面file_get_contents 这个php 在存起来 这样格式就不用那么累了,呵呵
      

  4.   

    $str="<?xml version=\"1.0\"?>\r<thumbnails>"; ???
    1、删去 \r ! 包括所有向 $str 赋值的串中的 \r
    2、你的 XML 声明中没有字符集声明,将会以默认的 utf-8 处理文档内容,如果内容是 gbk 的将会出现错误
    为此 mysql_query("SET NAMES gbk"); 应改为
    mysql_query("SET NAMES utf8");
    3、你在将 $str 写入文件前有 $str=$xml->asXML();
    那么查询数据库和构造XML串不是白忙活了吗?
      

  5.   

    $xmlFile = "123.xml";
    $dom = new DomDocument('1.0', 'GBK');
    $dom->formatOutput=true;
    $root = $dom->createElement("thumbnails"); 
    mysql_select_db('hdm0910283_db', $lnk) or die ('Can\'t use hdm0910283_db : ' . mysql_error());
    mysql_query("SET NAMES gbk");    
    $sql="select * from video";
    $query=mysql_query($sql);
    while ($row = mysql_fetch_array($query)) {
        $yourRec = $dom->createElement("thumbnail");
        $yourRec = $root->appendChild($yourRec);
        $yourRec->setAttribute('filename', $row[imgname]);
        $yourRec->setAttribute('label', $row[title]);
        $yourRec->setAttribute('url', $row[url]);
    }
    $dom->save($xmlFile);
      

  6.   

    用了weitaonn的方法,生成的123.xml文件只包含如下内容:
    <?xml version="1.0" encoding="utf-8"?>