Location: PHPKode > scripts > sqltoolkit > sqltoolkit/sql_xml.php
<?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_parser, XML_OPTION_CASE_FOLDING, false);
	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($handle, 1024);
	fclose($handle);
	return database_import_xml_packet($packet);
}

} // end code lock
?>
Return current item: sqltoolkit