Login   Register  
PHP Classes
elePHPant
Icontem

File: sql_xml.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Erik Giberti  >  sqltoolkit  >  sql_xml.php  >  Download  
File: sql_xml.php
Role: Auxiliary script
Content type: text/plain
Description: XML Import Functionality
Class: sqltoolkit
An API for interfacing with databases
Author: By
Last change: bug fix in database_import_xml_url() function
Date: 2003-03-23 12:59
Size: 3,707 bytes
 

Contents

Class file image Download
<?php

/*

    sql_xml.php - PHP functions for importing XML data into SQL toolkit
    Copyright (C) 2003 Erik Giberti (AF-Design), All rights reserved.

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

*/

if (!defined("_SQL_XML_FUNCTIONS_")){
    
define("_SQL_XML_FUNCTIONS_"TRUE);

    
// xml parser for an xml formated dataset converter to create a 
    // database_result class
    
    
function database_start_tag_handler($xml_parser$name$attributes){
        global 
$database_import_xml_data_in,     
               
$database_import_xml_info_in,
               
$database_import_xml_field_in;
        switch (
$name){
            case 
"dataset":
                
// assign info settings    
                
$database_import_xml_info_in["num_rows"] = $attributes["rows"];
                
$database_import_xml_info_in["num_fields"] = $attributes["cols"];
                break;
            case 
"row":
                
// start a new row
                
break;
            default:
                
// handle a column
                
$database_import_xml_field_in $name;
                break;
        }
    }

function 
database_end_tag_handler($xml_parser$name){
    global 
$database_import_xml_info_in;
    switch (
$name){
        case 
"row":
            
$database_import_xml_info_in["current_row"]++;
            break;
        default:
            break;
    }
}

function 
database_character_handler($xml_parser$data){
    global 
$database_import_xml_data_in,
           
$database_import_xml_info_in
           
$database_import_xml_field_in;
        if(
$database_import_xml_field_in == "" ||
           
$database_import_xml_field_in == "dataset" ||
           
$database_import_xml_field_in == "row") {
            
// swallow this data
        
} else {
            
// this must be field data
            
$database_import_xml_data_in[$database_import_xml_info_in["current_row"]][$database_import_xml_field_in] = $data;
            
$database_import_xml_field_in "";
        }
}

function 
database_entity_handler($xml_parser$name$base$systemID$publicID){
    
// print "Entity Handler Got: $name";
}

function 
database_import_xml_packet(&$packet){
    global 
$database_import_xml_field_in$database_import_xml_data_in$database_import_xml_info_in;
    
$database_import_xml_info_in["num_rows"] = 0;
    
$database_import_xml_info_in["num_fields"] = 0;
    
$database_import_xml_info_in["current_row"] = 0;

    
$xml_parser xml_parser_create();
    
xml_set_element_handler($xml_parser"database_start_tag_handler""database_end_tag_handler");
    
xml_set_character_data_handler($xml_parser"database_character_handler");
    
xml_set_external_entity_ref_handler($xml_parser"database_entity_handler");
    
xml_parser_set_option($xml_parserXML_OPTION_CASE_FOLDINGfalse);
    
xml_parse($xml_parser$packet
        or die (
"<b>sql.php</b>: unable to parse xml packet");

    
$result = new database_result($xml_parser"XML");
    
$result->assign_external_info($database_import_xml_info_in);
    
$result->assign_external_data($database_import_xml_data_in);
    return 
$result;



function 
database_import_xml_url($url){
    
$handle fopen ($url"r"); 
    
$packet fread($handle1024);
    
fclose($handle);
    return 
database_import_xml_packet($packet);
}

// end code lock
?>