dom4j使用



import java.io.File;
import java.io.FileInputStream;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

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

public class LineChartLocalUpdates {

@SuppressWarnings("unchecked")
public void readXml(String xmlFileName, Map<String, String> elementMap) {
if (xmlFileName == null || !xmlFileName.equals("")) {
xmlFileName = "D:\\workspace-web\\Test\\src\\xml\\new_file.xml";
}
if (elementMap == null || elementMap.size() == 0) {
elementMap = new HashMap<String, String>();
elementMap.put("7 day", "10");
elementMap.put("15 day", "20");
elementMap.put("30 day", "30");
}

SAXReader saxReader = new SAXReader();

try {
/**
* 先通过 org.dom4j.io.SAXReader 读入整份XML文档
*/
Document xmlDoc = saxReader.read(new FileInputStream(new File(
xmlFileName)));
Element rootElement = xmlDoc.getRootElement();

updateSeries(rootElement);

Iterator iterator = rootElement.elementIterator("graphs");
while (iterator.hasNext()) {
Element graphsElements = (Element) iterator.next();
List graphElementsList = graphsElements.elements("graph");
configGraphElementsList(elementMap, graphElementsList);

// updateSeriesElements(seriesElementsList);
}

System.out.println(xmlDoc.asXML());
} catch (Exception e) {

}
}

@SuppressWarnings("unchecked")
private void updateSeries(Element rootElement) {
Iterator iterator = rootElement.elementIterator("series");

while (iterator.hasNext()) {
Element element = (Element) iterator.next();
List valueElementsList = element.elements("value");
removeExpiredElements(valueElementsList);
updateSeriesElements(valueElementsList);
}
}

@SuppressWarnings("unchecked")
private void updateSeriesElements(List elementsList) {
Element lastValueElement = (Element) elementsList.get(elementsList
.size() - 1);
int xidValue = Integer.parseInt(lastValueElement.attributeValue("xid")) + 1;
// System.out.println(value);
Element seriesElement = lastValueElement.getParent()
.addElement("value");
configNewSeriesValueElement(seriesElement, String.valueOf(xidValue));
}

private void configNewSeriesValueElement(Element seriesElement,
String xidValue) {
GregorianCalendar gc = new GregorianCalendar();
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
gc.add(Calendar.HOUR_OF_DAY, - CacheFileDirManager.CACHE_UPDATE_DATE);

seriesElement.addAttribute("xid", xidValue);
seriesElement.addCDATA(sf.format(gc.getTime()));
}

@SuppressWarnings("unchecked")
private void configGraphElementsList(Map<String, String> elementMap,
List graphElementsList) {
Iterator iterator = graphElementsList.iterator();
while (iterator.hasNext()) {
Element graphElement = (Element) iterator.next();
List valueElementsList = graphElement.elements("value");
boolean hasDescription = removeExpiredElements(valueElementsList);
updateValueElements(hasDescription, valueElementsList, elementMap);
}
}

@SuppressWarnings("unchecked")
private void updateValueElements(boolean hasDescription,
List valueElementsList, Map<String, String> elementMap) {
Element lastValueElement = (Element) valueElementsList
.get(valueElementsList.size() - 1);
int xidValue = Integer.parseInt(lastValueElement.attributeValue("xid")) + 1;
// System.out.println(value);
Element element = lastValueElement.getParent().addElement("value");
configNewElement(element, String.valueOf(xidValue), hasDescription,
elementMap);
}

private void configNewElement(Element element, String xidValue,
boolean hasDescription, Map<String, String> elementMap) {
String title = element.getParent().attributeValue("title");
String descriptionValue = elementMap.get(title);

element.addAttribute("xid", xidValue);
element.addCDATA(descriptionValue);

if (hasDescription) {
element.addAttribute("description", descriptionValue);
}
}

@SuppressWarnings("unchecked")
private boolean removeExpiredElements(List valueElementsList) {
String descriptionValue = null;
for (int i = 0; i < valueElementsList.size(); i++) {
// ((Element) fourElementsList.get(0)).getName();
Element valueElements = ((Element) valueElementsList.get(i));
Attribute xidAttr = valueElements.attribute("xid");

String xidValue = xidAttr.getValue();
descriptionValue = valueElements.attributeValue("description");
if (xidValue != null && xidValue.equals("0")) {
System.out.println(valueElements.getText());
valueElements.detach();
} else {
String newXidValue = String
.valueOf(Integer.parseInt(xidValue) - 1);
xidAttr.setValue(newXidValue);
}
}
if (descriptionValue != null && !descriptionValue.equals("")) {
return true;
} else {
return false;
}
}

// public static void main(String[] args) {
// new XMLParse().readXml(null, null);
// }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值