-
-
/** XML 文件分析类
- * Date: 2013-02-01
- * Author: fdipzone
- * Ver: 1.0
- * Edition bbs.it-home.org
- * 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);
- }
- }
- ?>
-
复制代码
2,演示示例
-
-
require "XMLParser.class.php";
-
- $xmlfile = 'file.xml';
- $xmlstring = '
-
- 1000
- 100
- fdipzone
- 1
- 28
';
-
- echo '
';
-
- $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 '';
- ?>
复制代码
附,PHP XML预定义常量: http://bbs.it-home.org/shouce/php5/libxml.constants.html
|