XML文件
<?xml version="1.0" encoding="utf-8"?>
<SBB>
<item id="btnXinjiang" cname="新疆" />
<item id="btnXinjiang" cname="北京" />
<item id="btnXinjiang" cname="武汉" />
<item id="btnXinjiang" cname="上海市" />
<item id="btnXinjiang" cname="南京市" />
</SBB>
根据城市名称获取经纬度(这个类是直接在网上找的,哪里的忘了,直接拿过来用就好)
import java.util.HashMap;
import java.util.Map;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import net.sf.json.JSONObject;
public class BycityGetcoordinate {
//根据地质获取经纬度方法
public static Map<String,Double> getLngAndLat(String address){
Map<String,Double> map=new HashMap<String, Double>();
//下边这行,重要的是后边的AK值,如果AK值不对会报错,无法获取到经纬度,换一个能用的就OK
String url = "http://api.map.baidu.com/geocoder/v2/?address="+address+"&output=json&ak=F454f8a5efe5e577997931cc01de3974";
String json = loadJSON(url);
JSONObject obj = JSONObject.fromObject(json);
if(obj.get("status").toString().equals("0")){
double lng=obj.getJSONObject("result").getJSONObject("location").getDouble("lng");
double lat=obj.getJSONObject("result").getJSONObject("location").getDouble("lat");
map.put("lng", lng);
map.put("lat", lat);
//System.out.println("经度:"+lng+"---纬度:"+lat);
}else{
//System.out.println("未找到相匹配的经纬度!");
}
return map;
}
//从百度api获取json数据
public static String loadJSON (String url) {
StringBuilder json = new StringBuilder();
try {
URL oracle = new URL(url);
URLConnection yc = oracle.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(
yc.getInputStream()));
String inputLine = null;
while ( (inputLine = in.readLine()) != null) {
json.append(inputLine);
}
in.close();
} catch (MalformedURLException e) {
} catch (IOException e) {
}
return json.toString();
}
public static void main(String[] args){
Map<String,Double> map=BycityGetcoordinate.getLngAndLat("杭州市");
System.out.println("经度:"+map.get("lng")+"---纬度:"+map.get("lat"));
}
}
解析XML并完成保存文件在本地的功能(也是网上找的拿来改了改)
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import java.util.List;
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class Domtest {
public static void main(String[] args) {
//1、创建一个DocumentBuilderFactory的对象
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
//2、创建一个DocumentBuilder的对象
try {
//创建DocumentBuilder对象
DocumentBuilder db = dbf.newDocumentBuilder();
//3、通过DocumentBuilder对象的parser方法加载201801.xml文件到当前项目下
/*注意导入Document对象时,要导入org.w3c.dom.Document包下的*/
Document document = db.parse("util/201801.xml");//传入文件名可以是相对路径也可以是绝对路径
//获取所有item节点的集合
NodeList List = document.getElementsByTagName("item");
//通过nodelist的getLength()方法可以获取item的长度
System.out.println("一共有" + List.getLength() + "条信息");
//遍历每一个item节点
String message="";
String message1=null;
List<String> list = new ArrayList<>();
for (int i = 0; i < List.getLength(); i++) {
Node book = List.item(i);
//获取item节点的所有属性集合
NamedNodeMap attrs = book.getAttributes();
Map<String, String> s1 = new HashMap<String, String>();
for (int j = 0; j < attrs.getLength(); j++) {
//通过item(index)方法获取item节点的某一个属性
Node attr = attrs.item(j);
s1.put(attr.getNodeName(), attr.getNodeValue());
}
//获取属性
String name = s1.get("cname");
Map<String, Double> map = BycityGetcoordinate.getLngAndLat(name);//获取经纬度
Double v1 = map.get("lng");
String lng = new DecimalFormat("#.00").format(v1);
Double v2 = map.get("lat");
String lat = new DecimalFormat("#.00").format(v2);
String position = "["+lng + "," + lat+"]";
String m ="{name: '"+name+", 'position': "+position+"}";
list.add(m);
}
for(int i =0 ; i < list.size(); i ++ ){
if (i == list.size()-1) {
message += list.get(i);
break;
}
message += list.get(i)+", ";
}
message1 = "[ " + message+" ]";
File file = new File("E:/test.txt");
try (FileOutputStream fop = new FileOutputStream(file)) {
if (!file.exists()) {
file.createNewFile();
}
byte[] contentInBytes = message1.getBytes();
System.out.println("导出到文件成功!!!");
fop.write(contentInBytes);
fop.flush();
fop.close();
} catch (IOException e) {
e.printStackTrace();
}
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}