日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

java解析XML获取城市代码

發布時間:2025/3/20 asp.net 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java解析XML获取城市代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

運行前先導入dom4j架包,由于我們公司用的代理服務器所以下面我設置了代理ip,不需要的可直接忽略

?

package com.chengshidaima.tools;import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.InetSocketAddress; import java.net.Proxy; import java.net.URL; import java.net.URLConnection; import java.util.List; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element;public class CityCode {// private Logger log = Logger.getLogger(CityCode.class.getName());public static void main(String[] args) {try {CityCode cc = new CityCode();cc.getCityXml();//System.out.println(doc.asXML());} catch (Exception e) {e.printStackTrace();}}/*** 解析* * @return* @throws Exception*/@SuppressWarnings("unchecked")private Document getCityXml() throws Exception {/** 新建一個doc 保存結果 */Document docResult = DocumentHelper.createDocument();Element addElementRoot = DocumentHelper.createElement("china");String sUrlChina = "http://flash.weather.com.cn/wmaps/xml/china.xml";String sChinaProvXml = getUrlString(sUrlChina);Document doc = DocumentHelper.parseText(sChinaProvXml);Element rootElt = doc.getRootElement(); // 獲取根節點//log.info("根節點:" + rootElt.getName()); // 拿到根節點的名稱/** 取得所有省份 */List<Element> listProv = rootElt.elements("city"); // 獲取根節點下的子節點for (int i = 0; i < listProv.size(); i++) {Element elementProv = listProv.get(i);/** 省份名字 */String sProvName = elementProv.attributeValue("pyName");String sProvNameCN = elementProv.attributeValue("quName");/** 添加節點 */Element addElementProv = DocumentHelper.createElement("prov");addElementProv.addAttribute("pyName", sProvName);addElementProv.addAttribute("quName", sProvNameCN);try {//log.info("查詢省份:" + sProvNameCN + " 下的城市!");String sUrlProv = "http://flash.weather.com.cn/wmaps/xml/" + sProvName + ".xml";String sProvXml = getUrlString(sUrlProv);Document docProv = DocumentHelper.parseText(sProvXml);Element rootEltProv = docProv.getRootElement(); // 獲取省份下的跟節點List<Element> listCity1 = rootEltProv.elements("city");for (int j = 0; j < listCity1.size(); j++) {Element elementCity1 = listCity1.get(j);String sCityName1 = elementCity1.attributeValue("pyName");String sCityUrl1 = elementCity1.attributeValue("url");String sCityNameCN1 = elementCity1.attributeValue("cityname");System.out.println(sCityNameCN1 + ":" + sCityUrl1);Element addElementMainCity = DocumentHelper.createElement("city");addElementMainCity.addAttribute("pyName", sCityName1);addElementMainCity.addAttribute("quName", sCityNameCN1);addElementMainCity.addAttribute("url", sCityUrl1);try {String sUrlCity1 = "http://flash.weather.com.cn/wmaps/xml/" + sCityName1 + ".xml";//log.info("查詢主要城市:" + sCityNameCN1 + " 下的城市!");String sCityXml = getUrlString(sUrlCity1);Document docCity1 = DocumentHelper.parseText(sCityXml);Element rootCity1 = docCity1.getRootElement();List<Element> listCity2 = rootCity1.elements("city");for (int k = 0; k < listCity2.size(); k++) {Element elementCity2 = listCity2.get(k);String sCityName2 = elementCity2.attributeValue("pyName");String sCityNameCN2 = elementCity2.attributeValue("cityname");String sCityUrl2 = elementCity2.attributeValue("url");if (!sCityUrl1.endsWith(sCityUrl2)) {System.out.println(sCityNameCN2 + ":" + sCityUrl2);}Element addElementCity2 = DocumentHelper.createElement("city2");addElementCity2.addAttribute("pyName", sCityName2);addElementCity2.addAttribute("quName", sCityNameCN2);addElementCity2.addAttribute("url", sCityUrl2);addElementMainCity.add(addElementCity2);}} catch (Exception e) {// log.info("查詢主要城市:" + sCityNameCN1 + " 下的城市失敗!");}addElementProv.add(addElementMainCity);}} catch (Exception e) {//log.info("查詢省份:" + sProvNameCN + "下的城市失敗!");}addElementRoot.add(addElementProv);}docResult.setRootElement(addElementRoot);return docResult;}/*** 從url獲取xml字符串* * @param sUrl* @return* @throws Exception*/private String getUrlString(String sUrl) throws Exception {String sResult = "";StringBuffer sbResult = null;// log.info("開始連接Url:" + sUrl);sbResult = new StringBuffer();URL url = new URL(sUrl);// 創建代理服務器 InetSocketAddress addr = new InetSocketAddress("10.128.6.3",808); Proxy proxy = new Proxy(Proxy.Type.HTTP, addr); // http 代理 URLConnection con = url.openConnection(proxy);BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF-8"));String sLine = null;while ((sLine = br.readLine()) != null) {sbResult.append(sLine);}sResult = sbResult.toString();//log.info("獲取到信息:" + sbResult.toString().substring(0, 500));if (sResult.contains("html")) {String sInt = "null";Integer.parseInt(sInt);}return sResult;} }

?

?

運行部分結果如下圖:

?

總結

以上是生活随笔為你收集整理的java解析XML获取城市代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。