Med udgangspunkt i et script, som ganske fint parser en enkelt xml-fil, forsøger jeg nu, at parse 2 xml-filer, mit mål er 25 filer, i rap.
Variablerne ønskes fjernet, fordi det ikke spiller efter "sammensplejsningen".
<?php
$GLOBALS['data'] = array();
$GLOBALS['current'] =& $GLOBALS['data'];
function startTag($parser, $name, $attribs) {
$GLOBALS['current'][$name]['parent'] =& $GLOBALS['current'];
$GLOBALS['current'] =& $GLOBALS['current'][$name];
}
function endTag($handler, $name) {
$temp =& $GLOBALS['current'];
$GLOBALS['current'] =& $temp['parent'];
unset($temp['parent']);
}
function data($handler, $data) {
$data = trim($data);
if(!empty($data)) {
$GLOBALS['current'][] = $data;
}
}
$parser = xml_parser_create('') or die('Failed to create parser');
xml_set_element_handler($parser, 'startTag', 'endTag') or die ("Failed to set element handler");
xml_set_character_data_handler($parser, 'data') or die ("Failed to set data handler");
$fp = fopen('
http://www.dummydummy.dk/dit.xml', 'r');
while ($xml = fread($fp, 4096))
xml_parse($parser, $xml, feof($fp))
or die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
fclose($fp);
xml_parser_free($parser);
$data = $GLOBALS['data']['DIT']['D1'];
foreach($data as $name => $value) {
foreach($value as $index => $text) {
$tempArr[$index][$name] = $text;
}
}
$db = mysql_connect('xxx', 'yyy', 'zzz');
mysql_select_db('xxx', $db);
$dbfields = "D0, D1, " . implode(', ', array_keys($tempArr[0]));
foreach($tempArr as $value) {
$dbdata = implode("', '", $value);
$sql = "INSERT INTO table ($dbfields) VALUES('DIT', 'D1', '$dbdata')";
mysql_query($sql, $db);
}
mysql_close($db);
?>
<?php
$GLOBALS['data'] = array();
$GLOBALS['current'] =& $GLOBALS['data'];
function startTag($parser, $name, $attribs) {
$GLOBALS['current'][$name]['parent'] =& $GLOBALS['current'];
$GLOBALS['current'] =& $GLOBALS['current'][$name];
}
function endTag($handler, $name) {
$temp =& $GLOBALS['current'];
$GLOBALS['current'] =& $temp['parent'];
unset($temp['parent']);
}
function data($handler, $data) {
$data = trim($data);
if(!empty($data)) {
$GLOBALS['current'][] = $data;
}
}
$parser = xml_parser_create('') or die('Failed to create parser');
xml_set_element_handler($parser, 'startTag', 'endTag') or die ("Failed to set element handler");
xml_set_character_data_handler($parser, 'data') or die ("Failed to set data handler");
$fp = fopen('
http://www.dummydummy.dk/dat.xml', 'r');
while ($xml = fread($fp, 4096))
xml_parse($parser, $xml, feof($fp))
or die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
fclose($fp);
xml_parser_free($parser);
$data = $GLOBALS['data']['DAT']['D1'];
foreach($data as $name => $value) {
foreach($value as $index => $text) {
$tempArr[$index][$name] = $text;
}
}
$db = mysql_connect('xxx', 'yyy', 'zzz');
mysql_select_db('xxx', $db);
$dbfields = "D0, D1, " . implode(', ', array_keys($tempArr[0]));
foreach($tempArr as $value) {
$dbdata = implode("', '", $value);
$sql = "INSERT INTO table ($dbfields) VALUES('DAT', 'D1', '$dbdata')";
mysql_query($sql, $db);
}
mysql_close($db);
?>