获取世界洲省国家城市数据信息

发布者:梦之国

发布时间:2022-12-19

一般商城项目的时候,都会用到一个地址三级联动即【省、市、区】,不过这是国内的才这么写,如果是做外贸的商城那么联动地址就是国家、洲/省、市/区。这里就有一个问题,如果是国内的地址数据信息非常容易获得,百度上一搜一大堆,甚至还有专门的接口来供你使用(当然用接口的话需要你付一点费用,毕竟是人家辛苦整理的,可以理解);但是世界国家、洲省的数据就不好找了,主要有两个问题:

 

  • 大多数是只有国家,各个国家的洲省数据就没有了。
  • 找到的数据信息大多数都是中文的,但是外贸明显要用英语才行啊。

 

直到一次偶然的发现,终于让我解决了这个问题,个人找这些数据当然麻烦,但是大企业就不一样啊,他们有的资源你虽然没有但是稍微借用一下还是可以的(^_^),找到你电脑上的一个软件QQ(没错就是这个你经常用的QQ)。找到之后按照以下方法:

 

 

  • 找到QQ的安装目录(如果安装时你没有修改的话一般在C盘;如果修改了,你可以在图标上单击右键选择打开文件目录),现在我以C盘安装为例C:\Program Files\Tencent\QQIntl\I18N\2052 找到这个文件夹。里面 找到loclist.xml文件 。这个文件就是中文版的世界洲省国家城市数据信息了。
  • 上个步骤找到了中文版数据,那么英文版的呢?不要着急还是要用到QQ,但是你要安装国际版QQ。然后在在安装目录下找到1033目录(之前的路径不变),数据库文件的名字是一样的 loclist.xml

 

*注意:英文版和中文版的所在文件夹是不同的,中文版在2052,英文版在1033

 

数据找到了但这只是原始的xml数据,那么如果才能把这些数据整理成可以使用数据?下面我以PHP语言(后端语言我也只会PHP,哈哈哈)为例说明,首先在数据库中创建一张表要包含以下几个信息:ID、名称、上级名称、层级【为了区分洲省等是属于哪个国家这里以1、2、3来区分】,这是所需要的基本字段,至于其他的你可以根据需要自行添加。

 

接下来、使用PHP读取xml文件中数据进行转化,然后存进数据库:

 

<?php

$db_Type = "mysql";//数据库类型
$host = "localhost";//主机名
$dbName = "magento";//数据库名
$userName = "root";//用户名
$password = "";//密码
$dsn = "{$db_Type}:host={$host};dbname={$dbName}";
try{
        $pdo = new PDO ($dsn,$userName,$password);//创建一个连接对象
        
}catch (PDOException $e){
        die('操作失败'.$e->getMessage());
}

$sql = "insert into country values(0,'source','total','0','0')";
$pdo->exec($sql);
$pid = $pdo->lastInsertId();


  $file = dirname(__FILE__).'./country.xml';
  $data  = simplexml_load_file($file);
  //$data = json_encode();
  foreach ($data as $key => $value) {
    $sql = "insert into country values(0,'".(string)$value['Name']."','".(string)$value['Code']."',$pid,'1')";
    $pdo->exec($sql);
    $pidG = $pdo->lastInsertId();
    foreach ($value as $k => $v) {
      if(!empty($v['Name'])){
        $sql1 = "insert into country values(0,'".(string)$v['Name']."','".(string)$v['Code']."',$pidG,'2')";
        $pdo->exec($sql1);
        $pidP = $pdo->lastInsertId();
      }
      foreach ($v as $key1 => $value1) {
        $pidChild = isset($pidP)? $pidP:$pidG;
        $sql1 = "insert into country values(0,'".(string)$value1['Name']."','".(string)$value1['Code']."',$pidChild,'3')";
        $pdo->exec($sql1);
      }
    }
    unset($pidP);
  }
?>

 

 

标签: XML数据读取 世界国家洲省 国家数据

上一篇:

下一篇:

captcha