您的位置:首页 > 编程语言 > Java开发

java util :获取国家省份城市工具类

2016-08-26 09:57 148 查看

java获取全国各地省份、城市名称

自己封装的java工具类,可以用来获取各地的省份城市名称。项目文件存在了云盘,直达链接:http://pan.baidu.com/s/1o82dPNG 密码:dgcg
一、需要准备一下几个东西:
1. qq安装目录下的地区xml





2.dom4j jar 包
下载地址:http://www.dom4j.org/dom4j-1.6.1/
二、代码
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		List<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<String>
*/
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) + " ");
}
}
}



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: