dom4j4.1.3解析XML字符串实例

187 篇文章 0 订阅
68 篇文章 0 订阅

XML文件:

<?xml version="1.0" encoding="GB2312"?>
<yhjx_result>
	<response>
		<type>muti_exact_locate</type>
		<result>
			<result_id>3001</result_id>
			<result_info>定位手机成功</result_info>
			<datetime>2012-04-20 14:32:21</datetime>
			<msid>186055*****</msid>
			<area_name>中国广东省广州市荔湾区鹤洞路259号 邮政编码: 510380</area_name>
			<img_url>http://60.217.33.***/infoservlet/googleMap.html?longitude=113.24&latitude=23.07&area=中国广东省广州市荔湾区鹤洞路259号 邮政编码: 510380</img_url>
			<external_note></external_note>
		</result>
		<result>
			<result_id>3001</result_id>
			<result_info>定位手机成功</result_info>
			<datetime>2012-04-20 14:32:21</datetime>
			<msid>139139*****</msid>
			<area_name>中国江西省抚州市广昌县316乡道</area_name>
			<img_url>http://60.217.33.***/infoservlet2/googleMap.html?longitude=116.42441&latitude=26.98980&area=中国江西省抚州市广昌县316乡道</img_url>
			<external_note></external_note>
		</result>
		<result>
			<result_id>3001</result_id>
			<result_info>定位手机成功</result_info>
			<datetime>2012-04-20 14:32:21</datetime>
			<msid>137766*****</msid>
			<area_name>中国江西省赣州市大余县S66赣韶高速</area_name>
			<img_url>http://60.217.33.***/infoservlet/googleMap.html?longitude=114.39721&latitude=25.38674&area=中国江西省赣州市大余县S66赣韶高速</img_url>
			<external_note></external_note>
		</result>
	</response>
</yhjx_result>


下面代码用于对上面XML的解析:

package org.apache.http.examples.demo;

import java.io.ByteArrayInputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;

public class NodeReadTest {
	public static void main(String[] args) {
		String xml="<?xml version=\"1.0\" encoding=\"GB2312\"?><yhjx_result><response><type>muti_exact_locate</type><result><result_id>3001</result_id><result_info>定位手机成功</result_info><datetime>2012-04-20 12:08:30</datetime><msid>13776602***</msid><area_name>中国广东省韶关市曲江区京珠高速</area_name><img_url>http://220.248.226.***:8080/www/googleMap.html?longitude=113.61824&latitude=24.63805&area=中国广东省韶关市曲江区京珠高速</img_url><external_note></external_note></result><result><result_id>3001</result_id><result_info>定位手机成功</result_info><datetime>2012-04-20 12:08:30</datetime><msid>18605586***</msid><area_name>中国广东省广州市荔湾区永安大街5号</area_name><img_url>http://220.248.226.***:8080/www/googleMap.html?longitude=113.24&latitude=23.06&area=中国广东省广州市荔湾区永安大街5号</img_url><external_note></external_note></result><result><result_id>3001</result_id><result_info>定位手机成功</result_info><datetime>2012-04-20 12:08:30</datetime><msid>13913998***</msid><area_name>中国江西省抚州市南城县206国道</area_name><img_url>http://60.217.33.***/ly/googleMap.html?longitude=116.73544&latitude=27.68481&area=中国江西省抚州市南城县206国道</img_url><external_note></external_note></result></response></yhjx_result>";
		Document dom = getDocument(xml);
		List nodeList=dom.selectNodes("/yhjx_result/response/result");
		Iterator it=nodeList.iterator(); 
		while(it.hasNext()){
			Element el=(Element)it.next();
			Element result_id=(Element)el.selectNodes("result_id").get(0);
			System.out.println("result_id:"+result_id.getStringValue()); 
			Element result_info=(Element)el.selectNodes("result_info").get(0);
			System.out.println("result_info:"+result_info.getStringValue()); 
			Element datetime=(Element)el.selectNodes("datetime").get(0);
			System.out.println("datetime:"+datetime.getStringValue()); 
			Element msid=(Element)el.selectNodes("msid").get(0);
			System.out.println("msid:"+msid.getStringValue()); 
			Element area_name=(Element)el.selectNodes("area_name").get(0);
			System.out.println("area_name:"+area_name.getStringValue()); 
			Element img_url=(Element)el.selectNodes("img_url").get(0);
			System.out.println("img_url:"+img_url.getStringValue()); 
			Element external_note=(Element)el.selectNodes("external_note").get(0);
			System.out.println("external_note:"+external_note.getStringValue()); 	
			System.out.println("=================================================="); 				
		}
	}
	
	
	public void analysis(String soapContent){
		Document dom = null;
		try {
			SAXReader sb = new SAXReader();
			ByteArrayInputStream bais = new ByteArrayInputStream(soapContent.getBytes("gb2312"));
			dom = sb.read(bais);
		} catch (Exception e) {
			e.printStackTrace();
		}
		List nodeList=dom.selectNodes("/yhjx_result/response/result");
		Iterator it=nodeList.iterator(); 
		while(it.hasNext()){
			Element el=(Element)it.next();
			Element result_id=(Element)el.selectNodes("result_id").get(0);
			System.out.println("result_id:"+result_id.getStringValue()); 
			Element result_info=(Element)el.selectNodes("result_info").get(0);
			System.out.println("result_info:"+result_info.getStringValue()); 
			Element datetime=(Element)el.selectNodes("datetime").get(0);
			System.out.println("datetime:"+datetime.getStringValue()); 
			Element msid=(Element)el.selectNodes("msid").get(0);
			System.out.println("msid:"+msid.getStringValue()); 
			Element area_name=(Element)el.selectNodes("area_name").get(0);
			System.out.println("area_name:"+area_name.getStringValue()); 
			Element img_url=(Element)el.selectNodes("img_url").get(0);
			System.out.println("img_url:"+img_url.getStringValue()); 
			Element external_note=(Element)el.selectNodes("external_note").get(0);
			System.out.println("external_note:"+external_note.getStringValue()); 	
			System.out.println("=================================================="); 				
		}		
	}
	
 	public static void dealXml(String soapContent){
		Document dom = null;
		try {
			SAXReader sb = new SAXReader();
			ByteArrayInputStream bais = new ByteArrayInputStream(soapContent.getBytes("gb2312"));
			dom = sb.read(bais);
		} catch (Exception e) {
			e.printStackTrace();
		}
		List nodeList=dom.selectNodes("/yhjx_result/response/result");
		Iterator it=nodeList.iterator(); 
		while(it.hasNext()){
			Element el=(Element)it.next();
			String result_id=((Element)el.selectNodes("result_id").get(0)).getStringValue();
			System.out.println("result_id:"+result_id); 
			String result_info=((Element)el.selectNodes("result_info").get(0)).getStringValue();
			System.out.println("result_info:"+result_info); 
			String datetime=((Element)el.selectNodes("datetime").get(0)).getStringValue();
			System.out.println("datetime:"+datetime); 
			String msid=((Element)el.selectNodes("msid").get(0)).getStringValue();
			System.out.println("msid:"+msid); 
			String area_name=((Element)el.selectNodes("area_name").get(0)).getStringValue();
			System.out.println("area_name:"+area_name); 
			String img_url=((Element)el.selectNodes("img_url").get(0)).getStringValue();
			System.out.println("img_url:"+img_url); 
			String longitude=request(img_url,"longitude");
			System.out.println("longitude:"+longitude); 
			String latitude=request(img_url,"latitude");
			System.out.println("latitude:"+latitude); 
			String area=request(img_url,"area");
			System.out.println("area:"+area); 
			String external_note=((Element)el.selectNodes("external_note").get(0)).getStringValue();
			System.out.println("external_note:"+external_note); 	
			System.out.println("=================================================="); 				
		}		
	} 
	
 	public static String request(String url,String paraname) {
 		String[] paras = url.substring(url.indexOf("?") + 1, url.length()).split("&");
 		HashMap hm=new HashMap();
 		for(int i=0;i<paras.length;i++){
 			String[] pm=splitByString(paras[i]+"=","="); //这里加一个"="是为了截取参数串
 			hm.put(pm[0], pm[1]);
 		} 		
 		return String.valueOf(hm.get(paraname));
 	} 
 	
	public static String[] splitByString(String str, String splitchar) {
		if (str == null) {
			return null;
		}
		int len = str.length();
		if (len == 0) {
			return null;
		}
		List<String> list = new ArrayList<String>();
		int i = 0, start = 0;
		while (i < len) {
			if (str.charAt(i) ==splitchar.charAt(0)) {
				list.add(str.substring(start, i));
				start = ++i;
				continue;
			}
			i++;
		}
		if (start != i) {
			list.add(str.substring(start, i));
		}

		return (String[]) list.toArray(new String[list.size()]);
	}
	
	private static Document getDocument(String value) {
		Document dom = null;
		try {
			SAXReader sb = new SAXReader();
			ByteArrayInputStream bais = new ByteArrayInputStream(value.getBytes("gb2312"));
			dom = sb.read(bais);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return dom;

	}

}


 

 

此文件有两个关键点:

一、使用dom4j处理数据

二、对在java中对url串中字符的截取处理

三、正常的split

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值