<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head><body>
</body>
</html>
<?xml version="1.0" encoding="gb2312"?><messages><message id=1><user>athlan</user><text>hello</text></message><message id=2><user>athlan</user><text>hello</text></message><message id=3><user>athlan</user><text>yes</text></message><message id=4><user>Xiling</user><text>haha</text></message><message id=5><user>Xiling</user><text>shi ma?</text></message><message id=6><user>Xiling</user><text>shi de ya</text></message><message id=7><user>athlan</user><text>asdf</text></message><message id=8><user>athlan</user><text>asf</text></message></messages>这是我用浏览器查看源文件代码看见的

解决方案 »

  1.   


    <?php
    header('Content-Type: text/xml');
    include("../DB.php");
    $count = $_GET["last"];
    $messagesData = MySql::Select("select * from message where message_id > 0");$dom = new DOMDocument('1.0','utf-8'); //创建新的xml文件
    $messages = $dom->createElement('messages');
    $dom->appendChild($messages); //建立<messages>元素$i=0;
    foreach($messagesData as $position=>$rows)
    {
    if($rows[0] != 0) //过滤掉最后没有数据的那行,不然会出警告;
    {
    $message=$dom->createElement('message');
    $user = $dom->createElement('user');
    $userName = $dom->createTextNode($rows[2]);
    $user->appendChild($userName);

    $text = $dom->createElement('text');
    $textValue = $dom->createTextNode($rows[3]);
    $text->appendChild($textValue);

    $message->appendChild($user);
    $message->appendChild($text);
    $message->setAttribute("id",$rows[0]);
    $messages->appendChild($message);
    }
    }
    $XMLString = $dom->saveXML();
    echo $XMLString;
    ?>
    我又用DOM技术生成XML,还是出现如上问题,问题就是在浏览器查看源代码的时候,会自动在最上面给我加上<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
    <title>无标题文档 </title> 
    </head> <body> 
    </body> 
    </html>我觉得自动加上这段以后,就让另外的responseXML返回空了,我是在做一个AJAX无刷新的聊天室呵呵,麻烦高手指点下了啊~!~!~!
      

  2.   

    看看有没有一些和xml的关键字相同的特殊字符什么的,这很容易让xml解析不出来
      

  3.   


    include("../DB.php");
    $count = $_GET["last"];
    $messagesData = MySql::Select("select * from message where message_id > 0")
    去掉,手动给$messagesData赋值。例如$messagesData=array(array('a1','a2','a3','a4'),array('b1','b2','b3','b4'))我的意思就是,逐渐去掉代码,看看是哪部分输出了那些多余的html。另外,你做ajax聊天室,我给你个建议,去了解一下comet,了解一下如何做长连接,而不是使用“定期请求”这种效率极低的ajax方式。
      

  4.   

    恩,谢谢surfchen大哥,是include("../DB.php"); 出了问题了,产生了些多余的HTML;