服务器上有个 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 该在哪个位置设置呢?
//表示文件存在. 读文件并把文件内容发送回去
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 该在哪个位置设置呢?
header("Content-type: application/xml");
{
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);
}
$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收.期待 解惑
谢谢了. 写了这么多代码.
说实话,原谅我,我看不太懂.我想应该是 php的高级应用,类似于面向对象语言中的类吧. 这边我用到的只是一个小东西.暂时没有深入学习php.
谢了.真的.
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;
?>
直接在浏览器中,输出你要获取的php的地址,看能不能输出浏览器能够识别的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(); //返回是否成功 这种方式即可取得各节点或者属性的值。