<?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
?>
|