批量导入XML数据到drupal系统
2012-11-29 14:20
330 查看
如果你想把其它网站的数据[/b]批量导入[/b]到drupal[/b]系统中,下面代码对你有可能适用。前提条件是,你要把原来网站的数据[/b]生成XML格式!
生成XML的工具有很多,有个叫 xml.class.php的类,可以试用一下,你也可以自己写PHP代码来实现。
生成XML文件后,通过这个模块,直接上传,就可以把它导入到drupal[/b]系统了。
该模块还可以对你导入的数据[/b]进行自动分类(Taxonomy整合)。
以下为该模块的部分精华源代码,欢迎发信问问题和提出各种修改建议。
如需要完整模块,请向站长索取。
生成XML的工具有很多,有个叫 xml.class.php的类,可以试用一下,你也可以自己写PHP代码来实现。
生成XML文件后,通过这个模块,直接上传,就可以把它导入到drupal[/b]系统了。
该模块还可以对你导入的数据[/b]进行自动分类(Taxonomy整合)。
以下为该模块的部分精华源代码,欢迎发信问问题和提出各种修改建议。
如需要完整模块,请向站长索取。
<?php function import_form_submit($form, &$form_state) { ?????????? $validators = array('file_validate_extensions' => array('upload_file'),); ?????????? if ($file = file_save_upload('upload_file', $validators)) { ?????????????? $fd = fopen($file->filepath, "rb"); ?????????????? if (!$fd) { ?????????????????? form_set_error('upload_file', t('Import failed: file %filename cannot be read.', array('%filename' => $file->filename))); ?????????????? } ?????????????? else { ?????????????????? $info = fstat($fd); ?????????????????? $len = $info["size"]; ?????????????????? $text = fread($fd, $len); ?????????????????? fclose($fd); ?????????????????? drupal[/b]_set_message(t('Loaded file %filename. Now processing it.', array('%filename' => $file->filename))); ?????????????????? $form_state['values']['file'] = $file; ?????????????????? import_xml_invoke_import($text, $form_state['values']); ?????????????? } ?????????? } ?????????? else { ?????????????? form_set_error('upload_file', t('Import failed: file was not uploaded.')); ?????????? } } function parseMol($mvalues) { ???? for ($i=0; $i < count($mvalues); $i++) ???????????? $mol[$mvalues[$i]["tag"]] = $mvalues[$i]["value"]; ???? return new ImportXml($mol); } class ImportXml { ?? ???? var $tushushangpin;?? ???? var $shangpindaima;?????? ???? var $shuming; ???? var $congshuming; ???? var $fushucongshuming; ???? var $zhuzuozhe; ???? var $chubanzhe;?? ???? var $benbanbanci;?????? ???? var $yinci; ???? var $dingjia; ???? function ImportXml ($aa) { ???????????? foreach ($aa as $k=>$v) ???????????????????? $this->$k = $aa[$k]; ???? } } function import_xml_invoke_import(&$text) { // parse the data: ?? $xml_parser = drupal[/b]_xml_parser_create($text); ?? xml_parser_set_option($xml_parser,XML_OPTION_CASE_FOLDING,0); ?? xml_parser_set_option($xml_parser,XML_OPTION_SKIP_WHITE,1); ?? xml_parse_into_struct($xml_parser,$text,$values,$tags); ?? xml_parser_free($xml_parser); // now begin fetch the value foreach ($tags as $key=>$val) { ???????????? if ($key == "tushushangpin") { ???????????????????? $molranges = $val; ???????????????????? for ($i=0; $i < count($molranges); $i+=2) { ???????????????????????????????????? $offset = $molranges[$i] + 1; ???????????????????????????? $len = $molranges[$i + 1] - $offset; ???????????????????????????? $tdb[] = parseMol(array_slice($values, $offset, $len)); ???????????????????? } ???????????? } else { ???????????????????? continue; ???????????? } ???? } foreach($tdb as $value){ ?? $node = array(); ?? $node = new stdClass; ?? $node->type = "product"; ?? $node->status = 1; ?? $node->uid = 1; ?? $node->title = $value->shuming; // $node->body = $value->neirongtiyao; ?? $node->field_product_shangpindaima[0]['value'] = $value->shangpindaima;?? ?? $node->field_product_shuming[0]['value'] = $value->shuming;?????????????????????? // use ubercart ?? $node->field_product_congshuming[0]['value'] = $value->congshuming; ?? $node->field_product_fushucongshuming[0]['value'] = $value->fushucongshuming; ?? $node->field_product_zhuzuozhe[0]['value'] = $value->zhuzuozhe; ?? $node->field_product_chubanzhe[0]['value'] = $value->chubanzhe; ?? $node->field_product_benbanbanci[0]['value'] = $value->benbanbanci; ?? $node->field_product_yinci[0]['value'] = $value->yinci; ?? $node->field_product_dingjia[0]['value'] = $value->dingjia; ?? // if $value->tongjifenlei is not null then : ?? if($value->tongjifenlei){ ?? $tj_vid = 1; ?? if($tid = (int) db_result(db_query('SELECT tid FROM {term_data} WHERE name = "%s" AND vid = %d', $value->tongjifenlei,$tj_vid))){???? ???????? $tj_tid = $tid; ???? }else{ ???????????? // vocabulary ID is hard coded for this example ?????? $autoterm = array( ???????? 'name' => $value->tongjifenlei,?? // or whatever you want the auto-term to be named ???????? 'parent' => 0, ???????? 'vid' => $tj_vid, ?????? ); ???????? taxonomy_save_term($autoterm); ???????? $tj_tid = (int) db_result(db_query('SELECT MAX(tid) FROM {term_data} WHERE vid = %d', $vid)); ???? } ???? $node->taxonomy[$tj_vid][$tj_tid] = $tj_tid; ?? } ?? node_save($node); }?? drupal[/b]_set_message("Import Successful!"); } ?>
相关文章推荐
- SQLSERVER从excel中批量导入数据 64位系统
- django批量导入xml数据
- MVC4.0系统开发新手历程(三)---大数据批量导入
- mr解析xml将数据(ipv4、ipv6)批量导入hbase
- Android---批量将excel表格中的联系人数据导入到系统联系人
- 读取接口XML和批量导入数据SqlBulkCopy
- django批量导入xml数据
- Microsoft Dynamics CRM 2015 数据管理 之 如何批量导入数据到 正式区(二)系统自带示例数据 安装及教学
- UPOP数据统计系统中的批量导入数据功能
- 模块管理常规功能自定义系统的设计与实现(10--数据新增[三、批量导入数据])
- 邮件服务系统专题6:Turbomail邮件数据的导入与导出
- JeeSite(2):导入数据,进入系统
- Load Data Infile批量导入数据
- 【实验总结二】如何从文本中批量导入数据
- 机房收费系统———如何将MSFlexGrid中的数据导入到Excel中
- BLOG - 个人博文系统开发总结 三:批量博文导入功能
- mysql,oracle批量导入数据
- ASP.NET Excel用户数据批量导入(三层)
- 根据XML配置规则导入Excel数据(七)测试
- SQL Server数据库中批量导入数据的四种方法总结