全球地址数据文件及处理
前言
实战篇内容参考:
1、博主Shaun-sheng:全球国家、省/州、城市的数据库(中,英版)
2、博主梦岚如雪:Java中将xml文件转化为json的两种方式
1、腾讯使用的—全球的国家、省/州、区/city的【数据文件】(中,英版)
1.1 地址数据文件的中文版本
安装QQ最新版,找到对应文件(如下图)
1.2 地址数据文件的英文版本
安装QQ国际版,找到对应文件(如下图)
2、Java将xml文件转换为能够使用的json文件
2.1 需要使用org.json.jar和commons-io.jar两个jar包。
- 下载地址:org.json.jar
- 下载地址:commons-io.jar
2.2 Java版代码,保存至txt文件中
/**
* @Title: JsonUtils.java
* @Description: TODO(描述)
* @author Raffaello
* @date 2021-01-29 05:03:10
*/
package JsonUtils;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import org.apache.commons.io.IOUtils;
import org.json.JSONException;
import org.json.JSONObject;
import org.json.XML;
public class JsonUtils {
private static String filenameTemp;
/**
* xml转换为json字符串
*
* @Title: xml2jsonString
* @Description: TODO(描述)
* @return
* @throws JSONException
* @throws IOException
* @author Raffaello
* @date 2021-01-29 05:59:41
*/
public static String xml2jsonString() throws JSONException, IOException {
InputStream in = JsonUtils.class.getResourceAsStream("LocList.xml");
String xml = IOUtils.toString(in);
JSONObject xmlJSONObj = XML.toJSONObject(xml);
return xmlJSONObj.toString();
}
/**
* 创建js文件
*
* @throws IOException
*/
public static boolean createJSFile(String name) throws IOException {
boolean flag = false;
filenameTemp = name + ".js";
File filename = new File(filenameTemp);
if (!filename.exists()) {
filename.createNewFile();
flag = true;
}
return flag;
}
/**
* 写文件
*
* @param newStr 新内容
* @throws IOException
*/
public static boolean writeJSFile(String newStr) throws IOException {
// 先读取原有文件内容,然后进行写入操作
boolean flag = false;
String filein = newStr + "\r\n";
String temp = "";
FileInputStream fis = null;
InputStreamReader isr = null;
BufferedReader br = null;
FileOutputStream fos = null;
PrintWriter pw = null;
try {
// 文件路径
File file = new File(filenameTemp);
// 将文件读入输入流
fis = new FileInputStream(file);
isr = new InputStreamReader(fis);
br = new BufferedReader(isr);
StringBuffer buf = new StringBuffer();
// 保存该文件原有的内容
for (int j = 1; (temp = br.readLine()) != null; j++) {
buf = buf.append(temp);
// System.getProperty("line.separator")
// 行与行之间的分隔符 相当于“\n”
buf = buf.append(System.getProperty("line.separator"));
}
buf.append(filein);
fos = new FileOutputStream(file);
pw = new PrintWriter(fos);
pw.write(buf.toString().toCharArray());
pw.flush();
flag = true;
} catch (IOException e1) {
// TODO 自动生成 catch 块
throw e1;
} finally {
if (pw != null) {
pw.close();
}
if (fos != null) {
fos.close();
}
if (br != null) {
br.close();
}
if (isr != null) {
isr.close();
}
if (fis != null) {
fis.close();
}
}
System.out.println("write finished");
return flag;
}
public static void main(String[] args) throws JSONException, IOException {
String string = xml2jsonString();
System.out.println(string);
boolean flag = createJSFile("Location");
System.out.println(flag);
writeJSFile("var address = {");
writeJSFile(string);
writeJSFile("};");
}
}