`
jilong-liang
  • 浏览: 475125 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类

dom4j和jsoup解析百度地图xml获取地方信息

阅读更多
package ivyy.taobao.com.dom4j;
import ivyy.taobao.com.entity.Address;
import ivyy.taobao.com.entity.Location;
import ivyy.taobao.com.entity.Point;
import ivyy.taobao.com.entity.Pois;
import ivyy.taobao.com.utils.IoUtils;
import ivyy.taobao.com.utils.UrlUtils;
import ivyy.taobao.com.utils.Dom4jUtils;

import java.io.File;
import java.net.URL;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.jsoup.Jsoup;
import org.jsoup.select.Elements;
/**
 *@Date:2015-1-6
 *@Author:liangjilong
 *@Email:jilongliang@sina.com
 *@Version:1.0
 *@Description:
 */
@SuppressWarnings("all")
public class Dom4jTest2 {
	
	public static void main(String[] args)throws Exception {
		//String filepath="D:/"+System.currentTimeMillis()+".xml";
		String filepath="D:/test/map1.xml";
		File f=new File(filepath);
		if(!f.exists()){
			f.createNewFile();
		}
		//List<Pois> list=getReaderXml("URL");
		List<Pois> list=getReaderXml("FILE");
		org.dom4j.Document doc=createAsXML(list);
		IoUtils.write(doc.asXML(),filepath);
		//格式化 
		Dom4jUtils.formatAsXml(doc);
	}
	
	 
	/****
	 * 组装成一个xml
	 * @param list
	 * @return
	 * @throws Exception
	 */
	private static org.dom4j.Document createAsXML(List<Pois> list) throws Exception{
		org.dom4j.Document doc=DocumentHelper.createDocument();
		Element  root=doc.addElement("GeocoderSearchResponse");//根
		root.addElement("status").setText("0");//status
		for (Iterator iterator = list.iterator(); iterator.hasNext();) {
			Pois pois = (Pois) iterator.next();

			Element result=root.addElement("result");//result
			List<Location>  listLoc=pois.getLocations();
			
			Element location=result.addElement("location");//location
			for (Iterator iterator2 = listLoc.iterator(); iterator2.hasNext();) {
				Location locObj = (Location) iterator2.next();
				location.addElement("lat").setText(locObj.getLat()+"");//lat
				location.addElement("lng").setText(locObj.getLng()+"");//lat
				result.addElement("formatted_address").setText(locObj.getFormattedAddress()+"");//formatted_address
				result.addElement("business").setText(locObj.getBusiness()+"");//business
			}
			
			List<Address>  listAdd=pois.getAddress();
			Element comp=result.addElement("addressComponent");//addressComponent
			for (Iterator iterator3 = listAdd.iterator(); iterator3.hasNext();) {
				Address address = (Address) iterator3.next();
				comp.addElement("streetNumber").setText(address.getStreetNumber()+"");//streetNumber
				comp.addElement("street").setText(address.getStreet()+"");//street
				comp.addElement("district").setText(address.getDistrict()+"");//district
				comp.addElement("city").setText(address.getCity()+"");//city
				comp.addElement("province").setText(address.getProvince()+"");//province
				comp.addElement("cityCode").setText(address.getCityCode()+"");//cityCode
			}
		
			Element poi=result.addElement("pois").addElement("poi");
			poi.addElement("addr").setText(pois.getAddr());//addr
			poi.addElement("distance").setText(pois.getDistance());//distance
			poi.addElement("name").setText(pois.getName());//name
			poi.addElement("poiType").setText(pois.getPoiType());//poiType
			poi.addElement("tel").setText(pois.getTel());//tel
			poi.addElement("zip").setText(pois.getZip());//zip
			
			List<Point> listPoint=pois.getPoints();
			Element point=poi.addElement("point");
			for (Iterator iterator4 = listPoint.iterator(); iterator4.hasNext();) {
				Point p = (Point) iterator4.next();
				point.addElement("x").setText(p.getX()+"");
				point.addElement("y").setText(p.getY()+"");
			}
		}
		 
		return doc;
	}
	 
	
	/**
	 * Dom4j(SAX)读取xml数据(解析)
	 * @param params
	 * @throws Exception
	 */
	private static List<Pois> getReaderXml(String flg) throws Exception{
		String fromRead=Dom4jTest2.class.getClassLoader().getResource("xml/map1.xml").getPath();

		List<Pois> list=new ArrayList<Pois>();
		SAXReader saxReader = new SAXReader();
		org.dom4j.Document document=null;
		//从api上面解析
		if(flg.equals("URL")){
			String url = UrlUtils.getBaiduMapUrl("你的key", "39.983424,116.322987", "xml");
			document = saxReader.read(url);
		//从文件上面的xml解析
		}else if(flg.equals("FILE")){
			document = saxReader.read(new File(fromRead));
		}
		Element resultEl = (Element)document.getRootElement().element("result");
		Element poisEl=resultEl.element("pois");//pois节点
		Element locationEl=resultEl.element("location");//location节点
		Element addressEl=resultEl.element("addressComponent");//addressComponent节点
		
		/*******从pois节点下面遍历多个poi节点*******/
		for (Iterator<Element> poIter = poisEl.elementIterator("poi"); poIter.hasNext();) {
			Element element = (Element) poIter.next();
			String addr = element.elementText("addr");
			String distance = element.elementText("distance");
			String name = element.elementText("name");
			String poiType = element.elementText("poiType");
			String tel =(element.elementText("tel")==""?"":element.elementText("tel"));
			String zip =(element.elementText("zip")==""?"":element.elementText("zip"));
			
			Pois poi=new Pois();
			poi.setAddr(addr);
			poi.setDistance(distance);
			poi.setName(name);
			poi.setPoiType(poiType);
			poi.setTel(tel);
			poi.setZip(zip);
			
			
			List<Location> listLoc=new ArrayList<Location>();
			/************Location***************************/
			String business=resultEl.elementText("business");
			String formatted_address=resultEl.elementText("formatted_address");
			String lat = locationEl.elementText("lat");
			String lng = locationEl.elementText("lng");
			
			Location location=new Location();
			location.setBusiness(business);
			location.setFormattedAddress(formatted_address);
			location.setLat(lat);
			location.setLng(lng);

			listLoc.add(location);
			poi.setLocations(listLoc);

			
			List<Address> listAddr=new ArrayList<Address>();
			/************Address***************************/
			Address address=new Address();
			String streetNumber=(addressEl.elementText("streetNumber")==""?"":addressEl.elementText("streetNumber"));
			String street=(addressEl.elementText("street")==""?"":addressEl.elementText("street"));
			String district=(addressEl.elementText("district")==""?"":addressEl.elementText("district"));
			String city=(addressEl.elementText("city")==""?"":addressEl.elementText("city"));
			String province=(addressEl.elementText("province")==""?"":addressEl.elementText("province"));
			String direction=(addressEl.elementText("direction")==""?"":addressEl.elementText("direction"));
			String distancez=(addressEl.elementText("distance")==""?"":addressEl.elementText("distance"));
			
			address.setStreetNumber(streetNumber);
			address.setStreet(street);
			address.setCity(city);
			address.setDistrict(district);
			address.setDirection(direction);
			address.setDistance(distancez);
			address.setProvince(province);
			
			listAddr.add(address);
			
			poi.setAddress(listAddr);
			
			list.add(poi);
		}
		
		return list;
	}
	
}

 

package ivyy.taobao.com.jsoup;
import ivyy.taobao.com.dom4j.Dom4jTest1;
import ivyy.taobao.com.entity.Address;
import ivyy.taobao.com.entity.Location;
import ivyy.taobao.com.entity.Point;
import ivyy.taobao.com.entity.Pois;
import ivyy.taobao.com.utils.IoUtils;
import ivyy.taobao.com.utils.UrlUtils;
import ivyy.taobao.com.utils.Dom4jUtils;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.jsoup.Jsoup;
import org.jsoup.select.Elements;
/**
 *@Date:2015-1-6
 *@Author:liangjilong
 *@Email:jilongliang@sina.com
 *@Version:1.0
 *@Description:
 */
@SuppressWarnings("all")
public class JsoupMap {
	
	public static void main(String[] args)throws Exception {
		String Encodeing="GBK";
		//List<Pois> list=JsoupReadXml("URL",Encodeing);//从api读取

		//------------------------------可以將這些數據保存到數據庫-------------------
		List<Pois> list=JsoupReadXml("FILE",Encodeing);//从本地的文件读取
		for (Iterator iterator = list.iterator(); iterator.hasNext();) {
			Pois pois = (Pois) iterator.next();
			
			//System.out.println(pois.getAddr());
			
			//------------------------------Address-----------------
			
			List<Address> listAdds=pois.getAddress();
			for (Iterator iterator2 = listAdds.iterator(); iterator2.hasNext();) {
				Address address = (Address) iterator2.next();
				System.out.println(address.getCity());
			}
			
			//------------------------------Location-----------------
			List<Location> locations = pois.getLocations();
			
			for (Iterator iterator2 = locations.iterator(); iterator2.hasNext();) {
				Location location = (Location) iterator2.next();
				System.out.println(location.getFormattedAddress());
			}
			
		}
	}
	 
	/**
	 * 用Jsoup去解析xml
	 * @param params
	 */
	private static List<Pois> JsoupReadXml(String flg,String Encodeing) throws Exception{
		List<Pois> list=new ArrayList<Pois>();
		
		String url = UrlUtils.getBaiduMapUrl("你的key", "39.983424,116.322987", "xml");
		org.jsoup.nodes.Document doc=null;
		if(flg.equals("URL")){
			  doc=Jsoup.connect(url).get();//网络连接
		}else if(flg.equals("FILE")){
			  String fromRead=Dom4jTest1.class.getClassLoader().getResource("xml/map1.xml").getPath();
			  String html=IoUtils.reader(fromRead);
			  doc=Jsoup.parse(html,Encodeing);
		}
		
		//org.jsoup.nodes.Document doc=Jsoup.parse(params);//本地数据,连接关闭就可以调用
		if(doc!=null)
		{
			Elements pois=doc.select("poi");//获取到poi节点
			for(org.jsoup.nodes.Element poi:pois){
				String addr=poi.getElementsByTag("addr").text().trim();
				String distance=poi.getElementsByTag("distance").text().trim();
				String name=poi.getElementsByTag("name").text().trim();
				String tel=poi.getElementsByTag("tel").text().trim();
				String zip=poi.getElementsByTag("zip").text().trim();
				String poiType=poi.getElementsByTag("poiType").text().trim();

				Pois p=new Pois();
				p.setAddr(addr);
				p.setDistance(distance);
				p.setName(name);
				p.setPoiType(poiType);
				p.setTel(tel);
				p.setZip(zip);
				
				List<Point> listPoint=new ArrayList<Point>();
				Point point=new Point();
				
				String x=poi.getElementsByTag("x").text().trim();
				point.setX(x);
				String y=poi.getElementsByTag("y").text().trim();
				point.setY(y);
				
				listPoint.add(point);
				p.setPoints(listPoint);
				
				List<Address> listAdd=new ArrayList<Address>();
				
				Elements comps=doc.select("addressComponent");
				
				for (org.jsoup.nodes.Element comp:comps) {
					String streetNumber=comp.getElementsByTag("streetNumber").text().trim();
					String district=comp.getElementsByTag("district").text().trim();
					String street=comp.getElementsByTag("street").text().trim();
					String city=comp.getElementsByTag("city").text().trim();
					String province=comp.getElementsByTag("province").text().trim();

					Address add=new Address();
					add.setStreetNumber(streetNumber);
					add.setStreet(street);
					add.setDistrict(district);
					add.setCity(city);
					add.setProvince(province);
					listAdd.add(add);
				}
				p.setAddress(listAdd);
				
				List<Location> listLoc=new ArrayList<Location>();
				Elements location=doc.select("location");
				for (org.jsoup.nodes.Element obj:location) {
					String	lat=obj.getElementsByTag("lat").text().trim();
					String	formatted_address=obj.getElementsByTag("formatted_address").text().trim();
					String	lng=obj.getElementsByTag("lng").text().trim();
					String	business=doc.select("business").text().trim();

					Location locat=new Location();
					locat.setLng(lng);
					locat.setLat(lat);
					locat.setFormattedAddress(formatted_address);
					locat.setBusiness(business);
					listLoc.add(locat);
				}
				String	status=doc.select("status").text().trim();
				p.setStatus(status);
				p.setLocations(listLoc);
				list.add(p);
			}
		}
		return list;
	}
}

 

package ivyy.taobao.com.entity;

import java.io.Serializable;

public class Location implements Serializable{
	private  String lat;//纬度
	private  String lng;//经度
	private  String formattedAddress;//经度
	private  String business;//经度
	public String getLat() {
		return lat;
	}
	public void setLat(String lat) {
		this.lat = lat;
	}
	public String getLng() {
		return lng;
	}
	public void setLng(String lng) {
		this.lng = lng;
	}
	public String getFormattedAddress() {
		return formattedAddress;
	}
	public void setFormattedAddress(String formattedAddress) {
		this.formattedAddress = formattedAddress;
	}
	public String getBusiness() {
		return business;
	}
	public void setBusiness(String business) {
		this.business = business;
	}
}

 

package ivyy.taobao.com.entity;

import java.io.Serializable;

public class Point implements Serializable{
	private String x;
	private String y;
	public String getX() {
		return x;
	}
	public void setX(String x) {
		this.x = x;
	}
	public String getY() {
		return y;
	}
	public void setY(String y) {
		this.y = y;
	}
	
}

 

package ivyy.taobao.com.entity;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

public class Pois implements Serializable{
	private String addr;
	private String distance;
	private String name;
	private String poiType;
	private String tel;
	private String zip;
	private String status;
	private String url;
	private String mapUrl;
	private List<Point> points=new ArrayList<Point>();
	private List<Location> locations=new ArrayList<Location>();
	private List<Address> address=new ArrayList<Address>();
	private List<Pois> pois=new ArrayList<Pois>();
	
	public String getStatus() {
		return status;
	}
	public String getUrl() {
		return url;
	}
	public void setUrl(String url) {
		this.url = url;
	}
	public void setStatus(String status) {
		this.status = status;
	}
	public List<Location> getLocations() {
		return locations;
	}
	public void setLocations(List<Location> locations) {
		this.locations = locations;
	}
	public List<Address> getAddress() {
		return address;
	}
	public void setAddress(List<Address> address) {
		this.address = address;
	}
	public List<Pois> getPois() {
		return pois;
	}
	public void setPois(List<Pois> pois) {
		this.pois = pois;
	} 
	
	public String getAddr() {
		return addr;
	}
	public void setAddr(String addr) {
		this.addr = addr;
	}
	public String getDistance() {
		return distance;
	}
	public void setDistance(String distance) {
		this.distance = distance;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPoiType() {
		return poiType;
	}
	public void setPoiType(String poiType) {
		this.poiType = poiType;
	}
	public String getTel() {
		return tel;
	}
	public void setTel(String tel) {
		this.tel = tel;
	}
	public String getZip() {
		return zip;
	}
	public void setZip(String zip) {
		this.zip = zip;
	}
	public List<Point> getPoints() {
		return points;
	}
	public void setPoints(List<Point> points) {
		this.points = points;
	}
	public String getMapUrl() {
		return mapUrl;
	}
	public void setMapUrl(String mapUrl) {
		this.mapUrl = mapUrl;
	}
	
}

 

 


 

源代码  http://download.csdn.net/detail/jilongliang/8333361

 

  • 大小: 20.3 KB
  • 大小: 161.5 KB
0
4
分享到:
评论

相关推荐

    使用Jsoup库解析HTML、XML或URL链接中的DOM节点

    4. **修改DOM** 虽然Jsoup主要用于读取,但也可以对DOM进行有限的修改。例如,添加一个新的元素: ```java Element newElement = doc.createElement("div"); newElement.text("新添加的内容"); doc.body()....

    java解析xml,dom解析,jsoup解析,完整项目

    以下是一个使用Jsoup解析XML的例子: ```java import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; public class JsoupParser { ...

    Jsoup解析html+xml

    三、Jsoup解析XML 虽然Jsoup主要用于HTML,但它也能处理XML文档,不过需要注意的是,XML的解析规则比HTML严格。在处理XML时,需要设置`Parser.xmlParser()`。 ```java String xml = "&lt;root&gt;&lt;item id='1'&gt;Item 1...

    jsoup解析xml文件

    **jsoup解析XML文件** jsoup是一个非常流行的Java库,主要设计用于处理HTML文档,但它也支持解析XML。这个库提供了简洁的API,使得提取和操作网页数据变得异常简便。在给定的资源中,我们可以看到一个使用jsoup解析...

    Jsoup解析XML

    下面我们将深入探讨如何使用Jsoup解析XML文件。 首先,我们需要引入Jsoup库。如果你的项目是Maven项目,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;org.jsoup &lt;artifactId&gt;jsoup &lt;version&gt;1.14.3 ``...

    jsoup解析某城市的XML

    JavaScript库Jsoup是一个非常强大的工具,用于处理HTML和XML文档。...理解如何使用Jsoup解析XML可以帮助我们更好地从XML数据源中提取信息,这对于开发、数据分析和自动化任务都是十分有价值的技能。

    jsoup 取html信息校验xml数据

    这一步骤可能涉及到XPath或XSLT,尽管这些不是JSoup内置的功能,但可以通过集成其他Java XML库(如JAXB或DOM4J)实现。 4. **转化结果为HTML**:最后,校验的结果可能以HTML的形式呈现,以便用户能以友好的格式查看...

    解析xml文件jsoup.rar

    JSoup解析XML的步骤 - **创建解析器**:JSoup提供了`Jsoup.parse()`方法来解析HTML或XML字符串,或者从URL、文件或输入流加载内容。对于XML,我们可以传递"application/xml"或"text/xml"作为MIME类型。 ```java ...

    jsoup解析HTML

    1. **DOM(Document Object Model)**: DOM是HTML和XML文档的标准表示方式,它将文档结构化为一个节点树,每个元素、属性和文本都成为一个节点。JSoup利用DOM模型来解析HTML,允许开发者通过节点遍历、查找和修改...

    Jsoup库文件;Jsoup解析Java包

    4. `示例代码`:可能包含一些示例代码,帮助初学者快速理解和上手使用Jsoup。 通过学习和掌握Jsoup库,开发者可以有效地处理HTML和XML文档,提高开发效率,简化复杂的数据提取任务。无论是进行网页爬虫开发,还是...

    HTML、XML等Dom节点类解析库jsoup.jar

    4. **链接处理**:jsoup可以解析并提取出文档中的链接,包括相对和绝对URL。它还可以进行链接规范化,确保所有链接都能正确指向目标资源。 5. **安全清理**:为了防止XSS(跨站脚本攻击),jsoup提供了安全的HTML...

    Android使用Jsoup技术解析HTML

    Jsoup的核心功能是解析HTML文档,并将其转化为一个DOM(Document Object Model)结构,这样我们就可以像操作XML一样操作HTML元素。DOM是一个树形结构,每个HTML标签都是树中的一个节点。Jsoup提供了丰富的API,如...

    Jsoup资源包与XML约束案例.rar

    这个资源包包含了Jsoup解析器的重要组件,允许开发者轻松地从网页抓取结构化数据。 首先,我们要了解Jsoup的核心功能。Jsoup支持连接到URL并下载HTML内容,或者直接解析已有的HTML字符串。通过使用Jsoup,你可以...

    jsoup解析返回的html

    以上就是关于使用JSoup解析HTML的一些基础知识,包括如何连接网页、获取HTML、使用CSS选择器、遍历元素、修改属性以及提取链接等内容。在实际开发中,JSoup的灵活性和强大功能使其成为处理HTML文档的得力工具。

    jsoup解析html修改文件名

    本文将深入探讨如何使用Jsoup解析HTML,并根据解析结果来修改文件名。我们将通过一个简单的示例来展示这个过程。 首先,我们需要理解Jsoup的基本用法。Jsoup库提供了一个强大的API,可以方便地解析HTML文档,提取...

    jsoup解析html

    ### 使用JSoup解析HTML 1. **引入依赖**:在Java项目中,可以通过添加jsoup-1.7.3.jar到类路径来引入JSoup。如果是在Maven或Gradle项目中,可以配置对应的依赖项。 2. **连接网页**:使用`Jsoup.connect(url)`方法...

    利用jsoup解析网页

    此外,`Element`类还提供了`children()`, `parent()`, `nextSibling()`, `previousSibling()`等方法,用于遍历和操作DOM树。 **提取数据** jsoup提供了丰富的API来提取元素的属性值、文本内容等: ```java String...

    jsoup 网页信息 抓取 选择器

    jsoup能够解析HTML,执行DOM操作,并且支持CSS选择器,这些功能使得它在网页抓取和数据挖掘领域具有很高的实用性。 **网页抓取** 网页抓取,也称为网络爬虫或网页抓取,是一种技术,用于自动化地从互联网上获取...

    JAVA jSOUP解析html

    `Test01.java`负责使用jSoup解析HTML并提取所需信息,而`UrlUtils.java`则辅助处理URL相关的操作,如生成合法请求的URL,或对获取的链接进行编码和解码。 总结,jSoup是Java中解析和操作HTML的强大工具,其易于使用...

    dom4j-jdom封装和解析例子

    dom4j,jsoup,jdom,w3cdom,xstream使用代码工程 package ivyy.taobao.com.dom4j; import ivyy.taobao.com.entity.Address; import ivyy.taobao.com.entity.Location; import ivyy.taobao.com.entity.Point; import ...

Global site tag (gtag.js) - Google Analytics