服务器上有个 xml文件, 当客户端发送请求后,php读取这个文件,并返回给客户端. 我想既然是文本信息我不需要对xml文件进行解析于是就用的是 fgets 函数直接读取.但是打印出来发现 其中有别的html信息在里面. <font size='1' ... table >等 字体颜色等信息if(file_exists($xmlFileName)){
    //表示文件存在. 读文件并把文件内容发送回去
    echo "file is here";
    $file = fopen($xmlFileName,'r');
//    $fileContent = "";
    while(!feof($file)){
//        $fileContent= $fileContet.fgets($file);
            echo fgets($file);
    }
//    echo $fileContent;
    fclose($fiel);
}
问题一:   这里这样读取xml文件是否有问题?因为里面包含了一些不是xml格式的信息.采用ajax 客户端那边用 response.responseXML来接收但是问题 是接受不到. responseText 能够收到.
问题二:  这个 接收不到,是什么原因呢? 有资料说是要在发送的时候指定 文件格式为xml 该在哪个位置设置呢? 

解决方案 »

  1.   

    输出之前,设置header
    header("Content-type: application/xml");
      

  2.   

    private function initModule():void
                {
                    this._basePath = "xxx/xxx/" + this._id + "/";
                    var urlRequest:URLRequest = new URLRequest(this._basePath + "xxx.xml");
                    var loader:URLLoader = new URLLoader(urlRequest);
                    loader.addEventListener(Event.COMPLETE, resultHandler);
                    loader.addEventListener(IOErrorEvent.IO_ERROR, faultHandler);
                    loader.load(urlRequest);
                }
      

  3.   


    $xmlFileName = "category.xml";if(file_exists($xmlFileName)){
        //表示文件存在. 读文件并把文件内容发送回去
        $file = fopen($xmlFileName,'r');
        header("Content-type: application/xml");
    //    $fileContent = "";
        while(!feof($file)){
    //        $fileContent= $fileContet.fgets($file);
                echo fgets($file);
        }
    //    echo $fileContent;
        fclose($file);
    }是这样吗? 帖子之前说的那个 用 responseText收到有什么table信息的是因为 " fclose($file);" 这里有错现在,是responseText收到的都是 xml文件的内容了.但是,还是不能用responseXML收.期待 解惑 
      

  4.   


    谢谢了. 写了这么多代码.
     说实话,原谅我,我看不太懂.我想应该是 php的高级应用,类似于面向对象语言中的类吧. 这边我用到的只是一个小东西.暂时没有深入学习php.
     谢了.真的.
      

  5.   

    是啊. 还是不能用 responseXML收.但是用 responseText就是能够看到. 
      

  6.   

    <script language='javascript'>
      var request = null;
      if(window.XMLHttpRequest){
          request = new XMLHttpRequest();
      } else if (window.ActiveXObject){
          request=new ActiveXObject("Msxml2.XMLHTTP");
          if (! request){
              request=new ActiveXObject("Microsoft.XMLHTTP");
          }
      }
      request.onreadystatechange=respHandle;
      request.open("GET","t333.php",true); 
      request.send(null);
      
      function respHandle()
      {
       if (request.readyState == 4)
    {
      var xmlDoc=request.responseXML;
      alert(xmlDoc.getElementsByTagName("id")[0].firstChild.nodeValue);
    }
      }
    </script><?php
    header("Content-Type: application/xml");
    echo <<<TEST
    <?xml version="1.0" encoding="utf-8" ?>
    <result>
    <item>
    <id>123</id>
    <type>TEST</type>
    <result>OK</result>
    </item>
    </result>
    TEST;
    ?>
      

  7.   

    不能接收,肯定是你哪部分出了问题,或js或php部分.
    直接在浏览器中,输出你要获取的php的地址,看能不能输出浏览器能够识别的xml来.
      

  8.   

    直接访问那个地址 加不加头,都能识别出来xml.
      

  9.   

    用 $xml = simplexml_load_file(“xxx.xml”);
    实例代码:XML代码:<?xml version="1.0" encoding="GBK" ?> 
    - <result tag="success">
      <username>weiyg</username> 
      <uid>358066</uid> 
      <money>0</money> 
    - <gameUserList gameServerID="5" count="1">
      <gameuser username="damimi123" password="123456" extend="" /> 
      </gameUserList>
      </result>  用 $xml = simplexml_load_file(“xxx.xml”);print_r($xml)是数据输出数据格式类似stdClass   SimpleXMLElement Object 

        [@attributes] => Array 
            ( 
                [tag] => success 
            )     [username] => weiyg 
        [uid] => 358066 
        [money] => 0 
        [gameUserList] => SimpleXMLElement Object 
            ( 
                [@attributes] => Array 
                    ( 
                        [gameServerID] => 5 
                        [count] => 1 
                    )             [gameuser] => SimpleXMLElement Object 
                    ( 
                        [@attributes] => Array 
                            ( 
                                [username] => damimi123 
                                [password] => 123456 
                                [extend] => 
                            )                 )         ) )
      运用$uid = $xml->uid; 
    $isbind = $xml->gameUserList->attributes()->count; //是否绑定, 
    $tag =  $xml->attributes(); //返回是否成功 这种方式即可取得各节点或者属性的值。
      

  10.   

    我试过 上面的方法 最终还是没有 收到 xml成功, 于是改成 发送text收到后,在js用split来拆分收到的数据.