java获取全国各地省份、城市名称
自己封装的java工具类,可以用来获取各地的省份城市名称。项目文件存在了360云盘,直达链接:https://yunpan.cn/OcMqzTTtGJ3R4J 访问密码 b087
一、需要准备一下几个东西:
1. qq安装目录下的地区xml
2.dom4j jar 包
二、代码
- package cn.wtzvae.util;
- import java.util.ArrayList;
- import java.util.Iterator;
- import java.util.List;
- import org.dom4j.Document;
- import org.dom4j.DocumentException;
- import org.dom4j.Element;
- import org.dom4j.io.SAXReader;
- /**
- * 选择地区工具,包含全国各地省级市级
- * @author LiuJinan
- *
- */
- public class LocalUtil {
- //各地区xml文件路径
- private static final String LOCAL_LIST_PATH = "config/LocList.xml";
- //所有国家名称List
- private static final List<String> COUNTRY_REGION = new ArrayList<String>();
- private static LocalUtil localutil;
- private SAXReader reader;
- private Document document;
- private Element rootElement; //根元素
- //初始化
- private LocalUtil(){
- //1.读取
- reader = new SAXReader();
- try {
- document = reader.read(LOCAL_LIST_PATH);
- } catch (DocumentException e) {
- e.printStackTrace();
- }
- //2.获得根元素
- rootElement = document.getRootElement();
- //3.初始化所有国家名称列表
- Iterator it = rootElement.elementIterator();
- Element ele = null;
- while(it.hasNext()){
- ele = (Element)it.next();
- COUNTRY_REGION.add(ele.attributeValue("Name"));
- }
- }
- /**
- *
- * @author LiuJinan
- * @TODO 功能: 获取所有国家名称
- * @time 2016-8-26 上午9:02:05
- * @return String[]
- */
- public List<String> getCountry(){
- return COUNTRY_REGION;
- }
- /**
- *
- * @author LiuJinan
- * @TODO 功能: 根据国家名获取该国所有省份
- * @time 2016-8-26 上午9:07:21
- * @param countryName 国家名,从getCountry()从取出
- * @return List<Element>
- */
- private List<Element> provinces(String countryName){
- Iterator it = rootElement.elementIterator();
- List<Element> provinces = new ArrayList<Element>();
- Element ele = null;
- while(it.hasNext()){
- ele = (Element)it.next();
- COUNTRY_REGION.add(ele.attributeValue("Name"));
- if(ele.attributeValue("Name").equals(countryName)){
- provinces = ele.elements();
- break;
- }
- }
- return provinces;
- }
- /**
- *
- * @author LiuJinan
- * @TODO 功能: 根据国家名获取该国所有省份
- * @time 2016-8-26 上午9:07:21
- * @param countryName 国家名,从getCountry()从取出
- * @return List<Element>
- */
- public List<String> getProvinces(String countryName){
- List<Element> tmp = this.provinces(countryName);
- List<String> list = new ArrayList<String>();
- for(int i=0; i<tmp.size(); i++){
- list.add(tmp.get(i).attributeValue("Name"));
- }
- return list;
- }
- /**
- *
- * @author LiuJinan
- * @TODO 功能:根据国家名和省份名,获取该省城市名列表
- * @time 2016-8-26 上午9:15:24
- * @param province
- * @param provinceName
- * @return
- */
- private List<Element> cities(String countryName, String provinceName){
- List<Element> provinces = this.provinces(countryName);
- List<Element> cities = new ArrayList<Element>();
- if(provinces==null || provinces.size()==0){ //没有这个城市
- return cities;
- }
- for(int i=0; i<provinces.size(); i++){
- if(provinces.get(i).attributeValue("Name").equals(provinceName)){
- cities = provinces.get(i).elements();
- break;
- }
- }
- return cities;
- }
- /**
- *
- * @author LiuJinan
- * @TODO 功能:根据国家名和省份名获取城市列表
- * @time 2016-8-26 下午4:55:55
- * @param countryName
- * @param provinceName
- * @return List<String>
- */
- public List<String> getCities(String countryName, String provinceName){
- List<Element> tmp = this.cities(countryName, provinceName);
- List<String> cities = new ArrayList<String>();
- for(int i=0; i<tmp.size(); i++){
- cities.add(tmp.get(i).attributeValue("Name"));
- }
- return cities;
- }
- public static LocalUtil getInstance(){
- if(localutil==null){
- localutil = new LocalUtil();
- }
- return localutil;
- }
- }
三、测试
- package test;
- import java.util.List;
- import cn.wtzvae.util.LocalUtil;
- public class TestLocalUtil {
- public static void main(String[] args) {
- LocalUtil lu = LocalUtil.getInstance();
- List<String> list = lu.getCities("中国", "广东");
- for(int i=0; i<list.size(); i++){
- System.out.print(list.get(i) + " ");
- }
- }
- }