PHP对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();
这样就能成功读取了.