您的位置:首页 > 其它

dom4j4.1.3解析XML字符串实例

2012-04-20 17:06 627 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息