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
相关推荐
4. **修改DOM** 虽然Jsoup主要用于读取,但也可以对DOM进行有限的修改。例如,添加一个新的元素: ```java Element newElement = doc.createElement("div"); newElement.text("新添加的内容"); doc.body()....
三、Jsoup解析XML 虽然Jsoup主要用于HTML,但它也能处理XML文档,不过需要注意的是,XML的解析规则比HTML严格。在处理XML时,需要设置`Parser.xmlParser()`。 ```java String xml = "<root><item id='1'>Item 1...
以下是一个使用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解析XML文件** jsoup是一个非常流行的Java库,主要设计用于处理HTML文档,但它也支持解析XML。这个库提供了简洁的API,使得提取和操作网页数据变得异常简便。在给定的资源中,我们可以看到一个使用jsoup解析...
下面我们将深入探讨如何使用Jsoup解析XML文件。 首先,我们需要引入Jsoup库。如果你的项目是Maven项目,可以在pom.xml文件中添加以下依赖: ```xml <groupId>org.jsoup <artifactId>jsoup <version>1.14.3 ``...
JavaScript库Jsoup是一个非常强大的工具,用于处理HTML和XML文档。...理解如何使用Jsoup解析XML可以帮助我们更好地从XML数据源中提取信息,这对于开发、数据分析和自动化任务都是十分有价值的技能。
这一步骤可能涉及到XPath或XSLT,尽管这些不是JSoup内置的功能,但可以通过集成其他Java XML库(如JAXB或DOM4J)实现。 4. **转化结果为HTML**:最后,校验的结果可能以HTML的形式呈现,以便用户能以友好的格式查看...
JSoup解析XML的步骤 - **创建解析器**:JSoup提供了`Jsoup.parse()`方法来解析HTML或XML字符串,或者从URL、文件或输入流加载内容。对于XML,我们可以传递"application/xml"或"text/xml"作为MIME类型。 ```java ...
1. **DOM(Document Object Model)**: DOM是HTML和XML文档的标准表示方式,它将文档结构化为一个节点树,每个元素、属性和文本都成为一个节点。JSoup利用DOM模型来解析HTML,允许开发者通过节点遍历、查找和修改...
4. `示例代码`:可能包含一些示例代码,帮助初学者快速理解和上手使用Jsoup。 通过学习和掌握Jsoup库,开发者可以有效地处理HTML和XML文档,提高开发效率,简化复杂的数据提取任务。无论是进行网页爬虫开发,还是...
4. **链接处理**:jsoup可以解析并提取出文档中的链接,包括相对和绝对URL。它还可以进行链接规范化,确保所有链接都能正确指向目标资源。 5. **安全清理**:为了防止XSS(跨站脚本攻击),jsoup提供了安全的HTML...
Jsoup的核心功能是解析HTML文档,并将其转化为一个DOM(Document Object Model)结构,这样我们就可以像操作XML一样操作HTML元素。DOM是一个树形结构,每个HTML标签都是树中的一个节点。Jsoup提供了丰富的API,如...
这个资源包包含了Jsoup解析器的重要组件,允许开发者轻松地从网页抓取结构化数据。 首先,我们要了解Jsoup的核心功能。Jsoup支持连接到URL并下载HTML内容,或者直接解析已有的HTML字符串。通过使用Jsoup,你可以...
以上就是关于使用JSoup解析HTML的一些基础知识,包括如何连接网页、获取HTML、使用CSS选择器、遍历元素、修改属性以及提取链接等内容。在实际开发中,JSoup的灵活性和强大功能使其成为处理HTML文档的得力工具。
本文将深入探讨如何使用Jsoup解析HTML,并根据解析结果来修改文件名。我们将通过一个简单的示例来展示这个过程。 首先,我们需要理解Jsoup的基本用法。Jsoup库提供了一个强大的API,可以方便地解析HTML文档,提取...
### 使用JSoup解析HTML 1. **引入依赖**:在Java项目中,可以通过添加jsoup-1.7.3.jar到类路径来引入JSoup。如果是在Maven或Gradle项目中,可以配置对应的依赖项。 2. **连接网页**:使用`Jsoup.connect(url)`方法...
此外,`Element`类还提供了`children()`, `parent()`, `nextSibling()`, `previousSibling()`等方法,用于遍历和操作DOM树。 **提取数据** jsoup提供了丰富的API来提取元素的属性值、文本内容等: ```java String...
jsoup能够解析HTML,执行DOM操作,并且支持CSS选择器,这些功能使得它在网页抓取和数据挖掘领域具有很高的实用性。 **网页抓取** 网页抓取,也称为网络爬虫或网页抓取,是一种技术,用于自动化地从互联网上获取...
`Test01.java`负责使用jSoup解析HTML并提取所需信息,而`UrlUtils.java`则辅助处理URL相关的操作,如生成合法请求的URL,或对获取的链接进行编码和解码。 总结,jSoup是Java中解析和操作HTML的强大工具,其易于使用...
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 ...