解析 xml 字符串

字符串範例:

<xml>
	<irregular>
		<period period="2019">
			<item
				guid="074996CA0B3E23877AC5FF148B1D0F65"
				name="001"
				start="20190402"
				end="20190702"
				year="2019"
				period="1"
			/>
			<item
				guid="D9E10527CA14F7A57C3FA1883AA7E8CE"
				name="002"
				start="20190718"
				end="20190912"
				year="2019"
				period="2"
			/>
		</period>
		<period period="2020">
			<item
				guid="1C64C6360FB0A9ACF8F263A0CF610E57"
				name="1"
				start="20200709"
				end="20200722"
				year="2020"
				period="1"
			/>
		</period>
	</irregular>
</xml>

 

編寫對應實體類: 

package interactive.bean;

import com.company.dna.core.type.GUID;

public class DateTimeInfo {
	private GUID guid;
	private String name;
	private String start;
	private String end;
	private String year;
	private String period;
	private String dateTime;

    // get  set 方法
}

 

解析實例:

/**
	 *  TODO XML 解析 
	 * @param dataTime
	 * @param irregularText
	 * @return
	 */
	public static String fromXmlGetDataTime(String irregularText) { // irregularText爲 XML字符串
		String dataTime = "";
		Map<String,List<DateTimeInfo>> map = new HashMap<String, List<DateTimeInfo>>();
		try {
			Document document = DocumentHelper.parseText(irregularText);
			Element root = document.getRootElement();
			Iterator<Element> irregularIt = root.elementIterator("irregular");
			while (irregularIt.hasNext()) {
				Element irregularNext = irregularIt.next();
				Iterator periodIt = irregularNext.elementIterator("period");
				  while (periodIt.hasNext()) {
						Element periodNext = (Element) periodIt.next();
						//
						String key = periodNext.attributeValue("period");
						List<DateTimeInfo> list = new ArrayList<DateTimeInfo>();
						int count = 0;
						//
						Iterator itemIt = periodNext.elementIterator("item");
						while (itemIt.hasNext()) {
							count++;
							DateTimeInfo info = new DateTimeInfo();
							Element itemEle = (Element) itemIt.next();
							//未設置  GUID
							info.setName(itemEle.attributeValue("name"));
							info.setStart(itemEle.attributeValue("start"));
							info.setEnd(itemEle.attributeValue("end"));
							info.setYear(itemEle.attributeValue("year"));
							info.setPeriod(itemEle.attributeValue("period"));
							//DateTime
							String str = key+"B";
							for (int j = 0; j < 4 - (count+"").length(); j++) {
								str += "0";
							}
							str += count;
							info.setDateTime(str);
							list.add(info);
						}
						map.put(key, list);
				  }
			}
			// 獲取當前時間   比較時間在哪個區間 
			String date = new SimpleDateFormat("yyyyMMdd").format(new Date());
			String key = date.substring(0, 4);
			List<DateTimeInfo> list = map.get(key);
			if(null != list && list.size()>0){
				for (DateTimeInfo dateTimeInfo : list) {
					String start = dateTimeInfo.getStart();
					String end = dateTimeInfo.getEnd();
					if(date.compareTo(start) >= 0 && date.compareTo(end) <= 0){
						dataTime = dateTimeInfo.getDateTime();
						break;
					}
				}
			}
		} catch (DocumentException e) {
			e.printStackTrace();
		}
		return dataTime;
	}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章