要用php 把XML数据导入mysql ,xml里所有的数据导入数据库
网站建设哪家好,找成都创新互联公司!专注于网页设计、网站建设、微信开发、微信小程序、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了道里免费建站欢迎大家使用!
我在php手册里找了个例子
to import xml into mysql
$file = "article_2_3032005467.xml";
$feed = array();
$key = "";
$info = "";
function startElement($xml_parser, $attrs ) {
global $feed;
}
function endElement($xml_parser, $name) {
global $feed, $info;
$key = $name;
$feed[$key] = $info;
$info = ""; }
function charData($xml_parser, $data ) {
global $info;
$info .= $data; }
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "charData" );
$fp = fopen($file, "r");
while ($data = fread($fp, 8192))
!xml_parse($xml_parser, $data, feof($fp));
xml_parser_free($xml_parser);
$sql= "INSERT INTO `article` ( `";
$j=0;
$i=count($feed);
foreach( $feed as $assoc_index = $value )
{
$j++;
$sql.= strtolower($assoc_index);
if($i$j) $sql.= "` , `";
if($i =$j) {$sql.= "` ) VALUES ('";}
}
$h=0;
foreach( $feed as $assoc_index = $value )
{
$h++;
$sql.= utf8_decode(trim(addslashes($value)));
if($i-1$h) $sql.= "', '";
if($i =$h) $sql.= "','')";
}
$sql=trim($sql);
echo $sql;
mysql导出的xml文件也是标准的xml文件,根节点是数据库名,重复节点是表名,表名节点里是字段名和值,用php自身带的解析xml类来解析xml文件,比如比较好用的simplexml类:
$xmlfile="test.xml";
//比如你的表名是user
$xml=simplexml_load_file($xmlfile);
foreach ($xml-user as $u)
{
$name= $u-name;
$sex= $u-sex;
$pwd= $u-pwd;
mysql_query("insert into user set name='$name',sex='$sex',pwd='$pwd'");
}
这样就把xml文件插入数据库表里了。
meta http-equiv="Content-Type" content="text/html; charset=utf-8"
?php
//脚本永不结束
set_time_limit(0);
//数据库连接
mysql_connect('host', 'user', 'password');
mysql_select_db('database');
while(true){
//这里不知道你的xml来源,改为你自己的来源,读入xml变量
$xml = 'xmlrow expect="201412345" opencode="1,2,3,4,5" opentime="2014-11-11 11:11:11"//xml';
//解析xml内容
$obj = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA);
$expect = $obj-row['expect'];
$opencode = $obj-row['opencode'];
$opentime = $obj-row['opentime'];
$sql='INSERT INTO table VALUES (\''.$expect.'\',\''.$opencode.'\',\''.$opentime.'\')';
mysql_query($sql);
//休息60秒
sleep(60);
}
由于php没有线程概念,这个页面要运行的话,必须维持一个在浏览器打开状态
这里的代码只是简单的示例,具体的逻辑你可以根据需求自己完善