• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

PHP解析xml的方法

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

PHP解析xml的方法
<pre>
<?php
/** XML 文件分析类
* Date: 2013-02-01
* Author: fdipzone
* Ver: 1.0
*
* func:
* loadXmlFile($xmlfile) 读入xml文件输出Array
* loadXmlString($xmlstring) 读入xmlstring 输出Array
*/

class XMLParser{

/** 读取xml文件
* @param String $xmlfile
* @return Array
*/
public function loadXmlFile($xmlfile){

// get xmlfile content
$xmlstring = file_exists($xmlfile)? file_get_contents($xmlfile) : '';

// parser xml
list($flag, $data) = $this->parser($xmlstring);

return $this->response($flag, $data);

}


/** 读取xmlstring
* @param String $xmlstring
* @return Array
*/
public function loadXmlString($xmlstring){

// parser xml
list($flag, $data) = $this->parser($xmlstring);

return $this->response($flag, $data);

}


/** 解释xml内容
* @param String $xmlstring
* @return Array
*/
private function parser($xmlstring){

$flag = false;
$data = array();

// check xml format
if($this->checkXmlFormat($xmlstring)){
$flag = true;

// xml to object
$data = simpleXML_load_string($xmlstring, 'SimpleXMLElement', LIBXML_NOCDATA);

// object to array
$this->objectToArray($data);
}

return array($flag, $data);

}


/** 检查xml格式是否正确
* @param String $xmlstring
* @return boolean
*/
private function checkXmlFormat($xmlstring){

if($xmlstring==''){
return false;
}

$xml_parser_obj = xml_parser_create();

if(xml_parse_into_struct($xml_parser_obj, $xmlstring, $vals, $indexs)===1){ // 1:success 0:fail
return true;
}else{
return false;
}

}


/** object 转 Array
* @param object $object
* @return Array
*/
private function objectToArray(&$object){

$object = (array)$object;

foreach($object as $key => $value){
if($value==''){
$object[$key] = "";
}else{
if(is_object($value) || is_array($value)){
$this->objectToArray($value);
$object[$key] = $value;
}
}
}

}


/** 输出返回
* @param boolean $flag true:false
* @param Array $data 转换后的数据
* @return Array
*/
private function response($flag=false, $data=array()){

return array($flag, $data);

}

}

?>

<?php
require "XMLParser.class.php";

$xmlfile = 'file.xml';
$xmlstring = '<?xml version="1.0" encoding="utf-8"?>
<xmlroot>
<status>1000</status>
<info></info>
<result><id>100</id>
<name>fdipzone</name>
<gender>1</gender>
<age>28</age>
</result>
</xmlroot>';

echo '<pre>';

$xml_parser = new XMLParser();
echo "response xmlfile\r\n";
list($flag, $xmldata) = $xml_parser->loadXmlFile($xmlfile);
if($flag){
print_r($xmldata);
}

echo "response xmlstring\r\n";
list($flag, $xmldata) = $xml_parser->loadXmlString($xmlstring);
if($flag){
print_r($xmldata);
}

echo '</pre>';
?>
</pre>


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
php8编译安装发布时间:2022-07-10
下一篇:
php数组转json中文乱码解决办法发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap