• 技术文章 >后端开发 >php教程

    php的XML文件解释类应用实例,phpxml类应用实例_PHP教程

    2016-07-13 10:18:28原创507

    php的XML文件解释类应用实例,phpxml类应用实例


    本文实例讲述了php的XML文件解释类及其用法,是非常实用的技巧。分享给大家供大家参考。具体如下:

    XMLParser.class.php类文件如下:

    <?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); 
      } 
    } 
    ?>
    
    

    Demo示例程序如下:

    <?php 
    require "XMLParser.class.php"; 
     
    $xmlfile = 'file.xml'; 
    $xmlstring = '<?xml version="1.0" encoding="utf-8"?> 
     
    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://www.php.net/manual/en/libxml.constants.php

    希望本文所述对大家PHP程序设计的学习有所帮助。


    php怎生成xml文件

    #使用dom生成xml,注意生成的xml中会没有空格。
    $dom=new DOMDocument('1.0','utf-8');
    $path="test.xml"; // $path 为xml文件的存储路径。

    $module=$dom->createElement('newmodule');// root node
    $dom->appendChild($module);

    $year=$dom->createElement('year'); // add attribute node
    $name=$dom->createAttribute('name');
    $name->nodeValue="最新动态";
    $year->setAttributeNode($name);
    $module->appendChild($year);

    $news=$dom->createElement('news');
    $year->appendChild($news);

    $date=$dom->createElement('date');
    $date_value=$dom->createTextNode('01-24');
    $date->appendChild($date_value);
    $news->appendChild($date);

    $title=$dom->createElement('title');
    $title_value=$dom->createTextNode('');
    $title->appendChild($title_value);
    $news->appendChild($title);

    $info=$dom->createElement('info');
    $info_value=$dom->createTextNode(' ]]>');
    $info->appendChild($info_value);
    $news->appendChild($info);

    echo $dom->saveXML();
    $dom->save($path);
    ?>
     

    读取php文件中的xml内容

    <%
    dim xml,objNode,objAtr,nCntChd,nCntAtr
    Set xml=Server.CreateObject("Microsoft.XMLDOM")
    xml.Async=False
    xml.Load(Server.MapPath("test.xml"))

    Set objNode=xml.documentElement
    nCntChd=objNode.ChildNodes.length-1

    '这个可以定义asp读取xml文件的那一个值,通过传递这个值来确定读取的数据

    for i=0 to nCntChd
    set objAtr=objNode.ChildNodes.item(i)
    nCntAtr=objAtr.Attributes.length-1

    '历遍一条记录里面的所有的记录项,记录是从0开始的

    for j=0 to nCntAtr
    response.write objAtr.Attributes.item(j).Text&"
    "
    next
    response.write "
    "
    next

    Set objAtr=Nothing
    Set objNode=Nothing
    Set xml=Nothing
    %>
    参考资料:homepage.yesky.com/369/3074869.shtml
     

    www.bkjia.comtruehttp://www.bkjia.com/PHPjc/882903.htmlTechArticlephp的XML文件解释类应用实例,phpxml类应用实例 本文实例讲述了php的XML文件解释类及其用法,是非常实用的技巧。分享给大家供大家参考。具...

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:php XML php文件
    上一篇:PHP实现支持GET,POST,Multipart/form-data的HTTP请求类,multipartform-data_PHP教程 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • 分享PHP函数使用小工具(附代码示例)• PHP安全编码总结(经验分享)• 非常全面!PHP常见漏洞代码总结!• 一文详解PHP实现职责链设计模式(附代码示例)• php实现通过JSON RPC与go通讯(附代码)
    1/1

    PHP中文网