当前位置: 代码迷 >> 综合 >> PHP 使用simplexml_load_file() 获取XML 返回为false 的问题并解决
  详细解决方案

PHP 使用simplexml_load_file() 获取XML 返回为false 的问题并解决

热度:54   发布时间:2024-02-09 03:56:20.0

PHP对XML文件进行读写操作的方法一共有四种,分别是:

字符串方式直接读写、  

file_put_contents($file, $str);//写入XML文件

$con = file_get_contents($file); //读取XML

DOMDocument读写、

XMLWrite写和XMLReader读、

SimpleXML读写.

-----------------------------------------------------------------------------------

主要说最简单的

simplexml_load_file() 读取XML 返回 object

情况是, 我本地使用 simplexml_load_file('test.xml') 读取正常, 

但是在服务器上使用时, 返回为 false .并且使用 try...catch() 无法捕捉到错误信息. try里面运行成功了.

但是返回依然是false.

搜索一番后,发现, SimpleXML 模块,  有些云服务器, 比如腾讯云, (我这个是金山云 ),可能被腾讯云服务禁用了

 

结果方法:

$file = '../game_conf/Questionnaire.xml';if(file_exists($file)) {//将XML中的数据,读取到数组对象中$xml_object=simplexml_load_file($file); //在部分服务器上, 因函数被禁用而无效, 返回false , try catch都无法捕捉if ($xml_object == false) {//换一种方式读取$con = file_get_contents($file);//把文件内容以字符串读出来$xml= str_replace('GB2312','UTF-8',$con);//simplexml_load_string解析xml返回false,排查之后发现是encoding='gb2312'$xml_object = simplexml_load_string($xml);//        var_dump($xml_object);}} else {echo '配置文件为空';
}var_dump($xml_object);die();$xml_json=json_encode($xml_object);//对象转成json
$xml_arr=json_decode($xml_json,true);//json再转成数组if(empty($xml_arr)) exit('配置文件为空');echo "<pre>";var_dump($xml_arr);die();

这样就能成功读取了.

 

 

 

 

  相关解决方案