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

Dom4j组装XML,Jsoup解析XML相互用

阅读更多
package com.app.duapp;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.io.Writer;
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;

import com.app.common.FileUtil;
import com.app.entity.duapp.Address;
import com.app.entity.duapp.Location;
import com.app.entity.duapp.Point;
import com.app.entity.duapp.Pois;
/**
 * @author liangjilong
 */
@SuppressWarnings("all")
public class JsoupDom {
	
	//private static String url = "http://api.map.baidu.com/geocoder/v2/?ak=E4805d16520de693a3fe707cdc962045&callback=renderReverse&location=39.983424,116.322987&output=xml&pois=1";
	private static String url = "http://liangjilong.duapp.com/it/xml.xml";
	public static void main(String[] args)throws Exception {
		String filepath="D:/map.xml";
		List<Pois> list=JsoupReadXml(url,null);
		String xml=createAsXml(list);
		write(xml,filepath);
	}
	
	/**
	 * Dom4j组装xml数据
	 * @param html
	 * @return
	 */
	private static String 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.asXML();
	}
	/**
	 * 一对多的解析http://jilongliang.iteye.com/blog/1906728
	 * 
	 * 用Jsoup去解析xml
	 * @param params
	 */
	private static List<Pois> JsoupReadXml(String params,String flag) throws Exception{
		List<Pois> list=new ArrayList<Pois>();
		
	    org.jsoup.nodes.Document doc=Jsoup.connect(params).get();//网络连接
		//org.jsoup.nodes.Document doc=Jsoup.parse(params);//本地数据,连接关闭就可以调用
		if(doc!=null)
		{
			Elements pois=doc.select("poi");//获取到poi节点
			for(org.jsoup.nodes.Element poi:pois){
				Pois p=new Pois();
				String addr=poi.getElementsByTag("addr").text().trim();
				p.setAddr(addr);
				String distance=poi.getElementsByTag("distance").text().trim();
				p.setDistance(distance);
				String name=poi.getElementsByTag("name").text().trim();
				p.setName(name);
				String poiType=poi.getElementsByTag("poiType").text().trim();
				p.setPoiType(poiType);
				String tel=poi.getElementsByTag("tel").text().trim();
				p.setTel(tel);
				String zip=poi.getElementsByTag("zip").text().trim();
				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) {
					Address add=new Address();
					String streetNumber=comp.getElementsByTag("streetNumber").text().trim();
					add.setStreetNumber(streetNumber);
					String street=comp.getElementsByTag("street").text().trim();
					add.setStreet(street);
					String district=comp.getElementsByTag("district").text().trim();
					add.setDistrict(district);
					String city=comp.getElementsByTag("city").text().trim();
					add.setCity(city);
					String province=comp.getElementsByTag("province").text().trim();
					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) {
					Location locat=new Location();
					String	lat=obj.getElementsByTag("lat").text().trim();
					locat.setLat(lat);
					String	lng=obj.getElementsByTag("lng").text().trim();
					locat.setLng(lng);
					String	formatted_address=obj.getElementsByTag("formatted_address").text().trim();
					locat.setFormattedAddress(formatted_address);
					String	business=doc.select("business").text().trim();
					locat.setBusiness(business);
					listLoc.add(locat);
				}
				String	status=doc.select("status").text().trim();
				p.setStatus(status);
				p.setLocations(listLoc);
				list.add(p);
			}
		}
		return list;
	}
	
	public static boolean write(String content, String htmlPath) {  
        boolean flag = true;  
        try {  
            Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(htmlPath), "UTF-8"));  
            out.write("\n" + content);  
            out.close();  
        } catch (Exception ex) {  
            ex.printStackTrace();  
            return false;  
        }  
        return flag;  
    }  
}
0
0
分享到:
评论

相关推荐

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

    在压缩包文件"JsoupDemo"和"Jsoup"中,可能包含了使用Jsoup进行DOM解析的示例代码。这些代码通常会展示如何连接到URL,选择元素,提取数据,以及进行一些基本的DOM操作。通过阅读和运行这些示例,你可以更深入地了解...

    Jsoup解析html+xml

    Jsoup是由Jonas Bonér创建的开源项目,它基于Java标准库的DOM解析器,但提供了更友好的API。要使用Jsoup,首先需要将其添加到你的项目依赖中。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml ...

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

    从这个项目中,你可以学习到如何在Java环境中设置和使用DOM解析器以及Jsoup库来处理XML数据。DOM解析适用于需要深度遍历和复杂操作的场景,而Jsoup则在处理HTML和简单XML时表现出更高的灵活性和易用性。通过实践这两...

    Jsoup解析XML

    Jsoup是一款Java库,设计用于处理HTML和XML文档,它提供了非常方便的API来抓取、解析、修改以及清理HTML...然而,如果需要更高级的XML处理功能,如XPath表达式支持,可能需要考虑使用更专业的XML库,如JAXB或DOM4J。

    jsoup解析xml文件

    在给定的资源中,我们可以看到一个使用jsoup解析XML文件的简单示例。 首先,我们来理解jsoup的基本用法。jsoup的核心类是`org.jsoup.Jsoup`,它提供了从字符串、URL或文件加载HTML或XML文档的方法。例如,要解析XML...

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

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

    解析xml文件jsoup.rar

    然而,对于复杂的XML文档,可能需要更专业的库如JDOM或DOM4J。 ```java Document doc = Jsoup.parse(xmlString, "text/xml", "", Parser.xmlParser().namespaceAware(true)); ``` ### 5. 性能优化 对于大量XML...

    jsoup解析某城市的XML

    在本案例中,我们将讨论如何使用Jsoup解析特定城市的数据,这些数据可能是通过XML格式提供的。XML(可扩展标记语言)是一种结构化的数据存储方式,常用于网络数据交换。在IT领域,理解和操作XML文档是至关重要的技能...

    Jsoup库文件;Jsoup解析Java包

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

    jsoup解析HTML

    它提供了非常方便的API,用于提取和操作数据,使用DOM、CSS以及类似于jQuery的方法。在JavaScript中,我们通常会使用jQuery来操作DOM,但在服务器端或Java环境中,JSoup就是这样一个强大的工具,它使得处理HTML文档...

    Android使用Jsoup技术解析HTML

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

    jsoup解析html修改文件名

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

    利用jsoup解析网页

    如果网页内容依赖JavaScript,可能需要使用如Selenium这样的工具先运行页面,再用jsoup解析生成的HTML。 **总结** jsoup是Java中处理HTML的强大工具,其简单易用的API使得网页解析变得轻松。通过学习和实践,你...

    jsoup解析返回的html

    在Java项目中使用JSoup,首先需要将JSoup的JAR文件添加到项目的类路径中,或者如果你的项目是Maven或Gradle项目,可以在pom.xml或build.gradle文件中添加对应的依赖。例如,在Maven项目中,可以在pom.xml文件中添加...

    jsoup 取html信息校验xml数据

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

    xml航班解析实例

    3. **XML解析库**:解析返回的XML数据,可能使用了Java内置的DOM或SAX解析器,或者第三方库如Jsoup、TinyXML或PullParser等。DOM解析器便于整体理解数据,SAX解析器则适合流式处理。 4. **数据绑定**:解析后的数据...

    JAVA jSOUP解析html

    - **解析文档**:调用`get()`方法获取HTML字符串,然后使用`Jsoup.parse(html)`解析为`Document`对象。 - **选择元素**:使用CSS选择器选择文档中的元素,如`doc.select("selector")`。 - **操作元素**:获取元素...

    jsoup解析html

    JSoup是一款Java库,它为了解析HTML和XML文档而设计,提供了简单易用的API,使得开发者可以方便地抓取和操作网页内容。这个库的强大之处在于它能理解HTML的复杂性,同时提供了一种结构化的、面向DOM的方式来处理网页...

    在android中使用jsoup解析页面链接

    不过,这通常会涉及到使用Jsoup进行更复杂的网页解析,例如查找特定元素、提取链接、筛选文本等。你可以使用Jsoup的各种选择器方法,如`select()`,来定位HTML元素: ```java Elements links = doc.select("a[href]...

Global site tag (gtag.js) - Google Analytics