XML字符串转换成List

时间:2022-06-08 02:06:04
package testJava.ari;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class XML字符串转换成List {

/**
* gefei add 2013-7-16 15:01:36
*
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
String out_param = "<dataout><Count>2</Count><PowerOffArea>江宁区1</PowerOffArea><TypeCode>01</TypeCode><StartTime>20130726 08:30:00</StartTime><StopTime>20130726 12:30:00</StopTime><ScopeLen>270</ScopeLen><Scope>1山凹站</Scope><PowerOffArea>江宁区2</PowerOffArea><TypeCode>01</TypeCode><StartTime>20130726 08:30:00</StartTime><StopTime>20130726 12:30:00</StopTime><ScopeLen>270</ScopeLen><Scope>2山凹站</Scope></dataout>";
List l = convertResXMLToList(out_param);
String cur_date = "20130716 15:41:10";
for(int i=0;i<l.size();++i){
System.out.println("PowerOffArea="+((Map)l.get(i)).get("PowerOffArea"));
System.out.println("TypeCode="+((Map)l.get(i)).get("TypeCode"));
System.out.println("StartTime="+((Map)l.get(i)).get("StartTime"));
System.out.println("StopTime="+((Map)l.get(i)).get("StopTime"));
System.out.println("ScopeLen="+((Map)l.get(i)).get("ScopeLen"));
System.out.println("Scope="+((Map)l.get(i)).get("Scope"));
}
System.out.println("在之间="+isBetStaAndStoTime("20130715 15:41:10","20130717 15:41:10",cur_date));
System.out.println("在之间="+isBetStaAndStoTime("20130716 15:40:10","20130716 15:41:10",cur_date));
System.out.println("不在之间="+isBetStaAndStoTime("20130714 15:40:10","20130715 15:41:11",cur_date));
System.out.println("不在之间="+isBetStaAndStoTime("20130717 15:40:10","20130717 15:41:11",cur_date));
}

/**
* 把xml格式的字符串转换成List<Map> 【停限电告知专用】
* @param xmlParam xml格式的字符串
* @return List<Map>
*/
public static List<Map> convertResXMLToList(String out_param) {
List<Map> xmlList = new ArrayList<Map>();
int all_count = 0;// 地市级停电告知的总条数

if(out_param.indexOf("<Count>") != -1){
all_count = Integer.parseInt(out_param.substring(out_param.indexOf("<Count>")+7, out_param.indexOf("</Count>")).toString().trim());
System.out.println("总条数="+all_count);
}
if(all_count > 0){
for(int i=0;i<all_count;++i){
Map xmlMap = new HashMap();
// 有缺陷 永远是第一次
xmlMap.put("PowerOffArea", out_param.substring(out_param.indexOf("<PowerOffArea>")+14, out_param.indexOf("</PowerOffArea>")).toString());
xmlMap.put("TypeCode", out_param.substring(out_param.indexOf("<TypeCode>")+10, out_param.indexOf("</TypeCode>")).toString());
xmlMap.put("StartTime", out_param.substring(out_param.indexOf("<StartTime>")+11, out_param.indexOf("</StartTime>")).toString());
xmlMap.put("StopTime", out_param.substring(out_param.indexOf("<StopTime>")+10, out_param.indexOf("</StopTime>")).toString());
xmlMap.put("ScopeLen", out_param.substring(out_param.indexOf("<ScopeLen>")+10, out_param.indexOf("</ScopeLen>")).toString());
xmlMap.put("Scope", out_param.substring(out_param.indexOf("<Scope>")+7, out_param.indexOf("</Scope>")).toString());

out_param = out_param.substring(out_param.indexOf("</Scope>")+8, out_param.length());
xmlList.add(xmlMap);
}
}

return xmlList;
}

/**
* 判断当前时间是否在停电开始和结束时间之内
* @param StartTime 停电开始时间
* @param StopTime 停电结束时间
* @return true=在之间 false=不在之间
* @throws Exception
*/
public static boolean isBetStaAndStoTime(String StartTime, String StopTime, String curTime) throws Exception{
boolean isFlag = false;// 默认当前日期不在开始和结束时间之间

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd HH:mm:ss");
Date d1 = sdf.parse(StartTime);// 停电开始时间
Date d2 = sdf.parse(StopTime);// 停电结束时间
Date d3 = sdf.parse(curTime);// 当前时间

long l1 = d1.getTime();// 开始
long l2 = d2.getTime();// 结束
long l3 = d3.getTime();// 当前
if(l3 >= l1 && l3 <= l2){
isFlag = true; // 当前日期在开始和结束时间之间
}

return isFlag;
}

}