777
来源:互联网 发布:win10软件字体模糊 编辑:程序博客网 时间:2024/06/03 09:59
1.
package test.impl.util.flashUtil;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
public class ChartXML {
private Document doc; //xml文档对象
private Element chart; //chart对象,根节点
private Element categories;
/**
* 无参构造方法
*/
public ChartXML()
{
DocumentBuilderFactory dtbf = DocumentBuilderFactory.newInstance();
try
{
doc = dtbf.newDocumentBuilder().newDocument();
}
catch (ParserConfigurationException e)
{
e.printStackTrace();
}
chart = doc.createElement("chart");
doc.appendChild(chart);
}
/**
* 批量设置chart样式
* @param attributeMap
*/
public void setStyles(Map<String, String> attributeMap)
{
this.addAttributesToElement(chart, attributeMap);
}
/**
* 设置chart单个样式
* 值为字符串的样式
* @param key
* @param value
*/
public void setStyle(String styleName, String value)
{
chart.setAttribute(styleName,value);
}
/**
* 设置chart单个样式
* 值为int型样式
* @param key
* @param value
*/
public void setStyle(String styleName, int value)
{
chart.setAttribute(styleName, value+"");
}
/*********************单型图表数据加载方法 start***********************/
/**
*
*/
public void setMapData(Map<String,Integer> chartMap)
{
Iterator<String> it = chartMap.keySet().iterator();
while(it.hasNext())
{
String key = it.next();
Element child = createChild(chart, "set");
child.setAttribute("label", key);
child.setAttribute("value", chartMap.get(key)+"");
child.setAttribute("displayValue", chartMap.get(key)+"");
}
}
/**
* 加载简单型图表数据
* @param labelList
* @param valueList
*/
// public void setSimpleChartData(List<String> labelList, List<String> valueList)
public void setSimpleChartData(List<String> labelList, List valueList)
{
int len = labelList.size()<valueList.size()?labelList.size():valueList.size();
for(int i=0; i<len; i++)
{
Element child = createChild(chart, "set");
child.setAttribute("label", labelList.get(i));
child.setAttribute("value", valueList.get(i).toString());
}
}
/**
* 加载线图数据
* @param labelList
* @param valueList
*/
// public void setLineData(List<String> labelList, List<String> valueList)
public void setLineData(List<String> labelList, List valueList)
{
int len = labelList.size()<valueList.size()?labelList.size():valueList.size();
for(int i=0; i<len; i++)
{
Element child = createChild(chart, "set");
child.setAttribute("label", labelList.get(i));
child.setAttribute("value", valueList.get(i).toString());
}
}
/**
* 饼图的数据加载
* @param lableList
* @param valueList
*/
// public void setDataPie(List<String> labelList, List<String> valueList)
public void setDataPie(List<String> labelList, List valueList)
{
int len = labelList.size()<valueList.size()?labelList.size():valueList.size();
for(int i=0; i<len; i++)
{
Element child = createChild(chart, "set");
child.setAttribute("label", labelList.get(i));
child.setAttribute("value", valueList.get(i).toString());
child = null;
}
Element styles = createChild(chart, "styles");
Element definition = createChild(styles, "definition");
Element style = createChild(definition, "style");
style.setAttribute("name", "myLegendFont");
style.setAttribute("type", "font");
style.setAttribute("size", "12");
style.setAttribute("color", "1C6700");
style.setAttribute("bold", "0");
Element application = createChild(styles, "application");
Element apply = createChild(application, "apply");
apply.setAttribute("toObject", "Legend");
apply.setAttribute("styles", "myLegendFont");
}
// <styles>
// <definition>
// <style name='myLegendFont' type='font' size='12' color='1C6700' bold='0' />
// </definition>
// <application>
// <apply toObject='Legend' styles='myLegendFont' />
// </application>
// </styles>
/**
* 饼图数据加载 (重载)
* @param dataMap
*/
public void setDataPie(Map<String, String> dataMap)
{
Set<String> set = dataMap.keySet();
Iterator<String> it = set.iterator();
while(it.hasNext())
{
Element child = createChild(chart, "set");
String key = it.next();
child.setAttribute(key, dataMap.get(key));
child = null;
}
}
public void setDataColumn(Map<String, String> dataMap)
{
Set<String> set = dataMap.keySet();
Iterator<String> it = set.iterator();
while(it.hasNext())
{
Element child = createChild(chart, "set");
String key = it.next();
child.setAttribute(key, dataMap.get(key));
child = null;
}
}
// public void setDataColumn(List<String> lableList, List<String> valueList)
public void setDataColumn(List<String> lableList, List valueList)
{
for(int i=0; i<valueList.size(); i++)
{
Element child = createChild(chart, "set");
child.setAttribute("label", lableList.get(i));
child.setAttribute("value", valueList.get(i).toString());
child = null;
}
}
/*********************单型图表数据加载方法 start***********************/
/*********************复合型图表数据加载方法 start***********************/
/**
* 利用JDK6的可变参数
*/
// public void setDataMultiChart(List<String> categoryList, List<String> seriesNameList, List<String>...dataLists)
public void setDataMultiChart(List<String> categoryList, List<String> seriesNameList, List...dataLists)
{
Element categories = createChild(chart, "categories");
Element category = null;
for(int i=0; i<categoryList.size(); i++)
{
category = createChild(categories, "category");
category.setAttribute("label", categoryList.get(i));
}
//获取最小索引,以免发生访问越界
int len = seriesNameList.size()<dataLists.length?seriesNameList.size():dataLists.length;
Element dataset = null;
Element set = null;
String seriesName = null;
for(int i=0; i<len; i++)
{
dataset = createChild(chart, "dataset");
seriesName = seriesNameList.get(i);
//若以c:开头,则表示为颜色
if(seriesName.startsWith("color:"))
{
String[] strs = seriesName.split(":");
dataset.setAttribute("color", strs[1]);
}
else
{
//否则表示数据集名称
dataset.setAttribute("seriesName", seriesNameList.get(i));
}
List dataList = dataLists[i];
for(int j=0; j<categoryList.size(); j++)
{
set = createChild(dataset, "set");
set.setAttribute("value", dataList.get(j).toString());
}
}
}
/**
* 添加category列表
* @param categoryList
*/
public void setChartCategory(List categoryList)
{
Element categories = createChild(chart, "categories");
Element category = null;
for(int i=0; i<categoryList.size(); i++)
{
category = createChild(categories, "category");
category.setAttribute("label", categoryList.get(i).toString());
}
}
/**
* 增加Category
* @param categoryName
*/
public void addChartCategory(String categoryName)
{
if(null == categories)
{
categories = createChild(chart, "categories");
}
Element category = createChild(categories, "category");
category.setAttribute("label", categoryName);
}
/**
* 增加Category
* 自动生成1~MaxCategory的categories
* @param categoryName
*/
public void addChartCategory(int MaxCategory, int step)
{
if(null==categories && MaxCategory>0)
{
categories = createChild(chart, "categories");
}
int min = 1;
if(step%2==0)
{
min = 2;
}
for(int i=1; i<=MaxCategory; i+=step)
{
Element category = createChild(categories, "category");
category.setAttribute("label", i+"");
}
}
public void addChartCategory(int minCategory, int MaxCategory, int step)
{
if(null==categories && MaxCategory>0)
{
categories = createChild(chart, "categories");
}
for(int i=minCategory; i<=MaxCategory; i+=step)
{
Element category = createChild(categories, "category");
category.setAttribute("label", i+"");
}
}
/**
* 增加Category
* @param categoryName
*/
public void addChartCategory(Object categoryName)
{
if(null == categories)
{
categories = createChild(chart, "categories");
}
Element category = createChild(categories, "category");
category.setAttribute("label", categoryName.toString());
}
/**
* 增加dataset
* @param categoryName
*/
public Element addChartDataset(String seriesName)
{
Element dataset = createChild(chart, "dataset");
dataset.setAttribute("seriesName", seriesName);
return dataset;
}
/**
* 添加数据组列表 datasets
* @param seriesNameList
* @param dataLists
*/
public void addMultiChart(List<String> seriesNameList, List...dataLists)
{
Element dataset = null;
Element set = null;
for(int i=0; i<seriesNameList.size(); i++)
{
dataset = createChild(chart, "dataset");
dataset.setAttribute("seriesName", seriesNameList.get(i));
List dataList = dataLists[i];
for(int j=0; j<dataList.size(); j++)
{
set = createChild(dataset, "set");
set.setAttribute("value", dataList.get(j).toString());
}
}
}
/**
* 在chartXML中添加一组数据 dataset
* @param seriesName
* @param dataList
*/
public void addMultiChart(String seriesName, List dataList)
{
Element dataset = createChild(chart, "dataset");
dataset.setAttribute("seriesName", seriesName);
Element set = null;
for(int j=0; j<dataList.size(); j++)
{
set = createChild(dataset, "set");
set.setAttribute("value", dataList.get(j).toString());
}
}
/**
* 重载
* @param categoryList
* @param dataMap
*/
public void setDataMultiChart(List<String> categoryList, Map<String, List<String>> dataMap)
{
//+++++++++++++++++++++++++++++++++++++++++++++++++++++//
Set<String> keyset = dataMap.keySet();
Iterator<String> it = keyset.iterator();
List<String> data1 = null;
while(it.hasNext())
{
data1 = dataMap.get(it.next());
break;
}
//获取最小值,以防止集合访问越界,更为健壮
int len = data1.size()>categoryList.size()?categoryList.size():data1.size();
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
Element categories = null;
Element category = null;
//生成父category标签
categories = createChild(chart, "categories");
//categories
//批量生成categories标签
for(int i=0; i<len; i++)
{
category = createChild(categories, "category");
category.setAttribute("label", categoryList.get(i));
}
//dataset标签和set标签生成
Element dataset = null;
Element set = null;
it = keyset.iterator();
List<String> dataList = null;
String seriesName = null;
while(it.hasNext())
{
seriesName = it.next();
dataList = dataMap.get(seriesName);
dataset = createChild(chart, "dataset");
dataset.setAttribute("seriesName", seriesName);
for(int i=0; i<len; i++)
{
set = createChild(dataset, "set");
set.setAttribute("value", dataList.get(i));
}
}
}
/**
* 设置线图的通用样式
*/
public void setLineUniversalStyle(String caption, String xName, String yName, int xStep, int yStep, int HlineNum, int VlineNum)
{
//根据valueList值的个数来确定水平线的条数
//根据valueList中的最大值来确定竖直线的条数
//根据valueList中的最大值来确定y轴值的步调
}
public void setSmartStyle(List<String> valueList)
{
}
public void setNPVchartData(List<String> categoryList, List<String> pillarDataList, List<String> lineDataList)
{
//生成categories
Element categories = null;
categories = createChild(chart, "categories");
Element category = null;
for(String str : categoryList)
{
category = createChild(categories, "category");
category.setAttribute("label", str);
}
//生成柱状图数据
Element dataset = createChild(chart, "dataset");
dataset.setAttribute("seriesName", "Years");
Element set = null;
for(String str : pillarDataList)
{
set = createChild(dataset, "set");
set.setAttribute("value", str);
}
//生成线图数据
dataset = null;
dataset = createChild(chart, "dataset");
dataset.setAttribute("seriesName", "USD");
dataset.setAttribute("color", "97B854");
dataset.setAttribute("renderAs", "Line");
dataset.setAttribute("parentYAxis", "S");
for(String str : lineDataList)
{
set = createChild(dataset, "set");
set.setAttribute("value", str);
}
}
public void setBusinessRoiLineData(List<String> categoryList, List<String> lineDataList1, List<String> lineDataList2, List<String> lineDataList3)
{
//生成categories
Element categories = null;
categories = createChild(chart, "categories");
Element category = null;
for(String str : categoryList)
{
category = createChild(categories, "category");
category.setAttribute("label", str);
}
//生成线图1数据
Element dataset = createChild(chart, "dataset");
dataset.setAttribute("seriesName", "PV of cash out");
dataset.setAttribute("color", "FF0000");
dataset.setAttribute("renderAs", "Line");
Element set = null;
for(String str : lineDataList1)
{
set = createChild(dataset, "set");
set.setAttribute("value", str);
}
//生成线图2数据
dataset = null;
dataset = createChild(chart, "dataset");
dataset.setAttribute("seriesName", "PV of cash in");
dataset.setAttribute("color", "33A9E0");
dataset.setAttribute("renderAs", "Line");
for(String str : lineDataList2)
{
set = createChild(dataset, "set");
set.setAttribute("value", str);
}
//生成线图3数据
dataset = null;
dataset = createChild(chart, "dataset");
dataset.setAttribute("seriesName", "PV of net cash");
dataset.setAttribute("color", "99BA56");
dataset.setAttribute("renderAs", "Line");
dataset.setAttribute("parentYAxis", "S");
for(String str : lineDataList3)
{
set = createChild(dataset, "set");
set.setAttribute("value", str);
}
}
// <category label='831' />
// <category label='832' />
//
// </categories>
// <dataset seriesName="A.C.off">
// <set value='32.7' />
// <set value='14.980165361182678' />
// <set value='33.33602555575811' />
// <set value='23.572602753844826' />
// <set value='34.13603623082115' />
//
///*********************复合型图表数据加载方法 start***********************/
//
//
// /**
// * 创建元素的私有方法
// * @param tagName
// * @return
// */
public Element createElement(String tagName)
{
return doc.createElement(tagName);
}
/**
* 创建元素的子元素
* @param parentTag
* @param childTagName
* @return
*/
public Element createChild(Element parentTag, String childTagName)
{
Element child = doc.createElement(childTagName);
parentTag.appendChild(child);
return child;
}
/**
* 为元素批量添加属性
* @param element
* @param attributesMap
* @return
*/
public Element addAttributesToElement(Element element, Map<String,String> attributesMap)
{
Set<String> set = attributesMap.keySet();
Iterator<String> it = set.iterator();
if(set.size()<=0)
{
return element;
}
String key = null;
while(it.hasNext())
{
key = it.next();
element.setAttribute(key,attributesMap.get(key));
}
return element;
}
/**
* 获取整个xml文档的字符串表示
* @return
*/
public String getXMLString()
{
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = null;
try {
transformer = tf.newTransformer();
} catch (TransformerConfigurationException e1) {
e1.printStackTrace();
}
DOMSource doms = new DOMSource(doc);
StringWriter sw = new StringWriter();
StreamResult sr = new StreamResult(sw);
try {
transformer.transform(doms, sr);
} catch (TransformerException e) {
e.printStackTrace();
}
String xmlString = sw.toString();
return xmlString;
}
public void writeToFile(String filePath) throws Exception
{
OutputStream os = new FileOutputStream(filePath);
os.write(this.getXMLString().getBytes());
}
public static void main(String[] args) throws Exception {
Map<String, String> attributesMap = new HashMap<String, String>();
attributesMap.put("caption", "深圳气温统计");
attributesMap.put("xx", "深圳气温统计");
attributesMap.put("yy", "深圳气温统计");
attributesMap.put("zz", "深圳气温统计");
List<String> categoryList = new ArrayList<String>();
categoryList.add("一月");
categoryList.add("二月");
categoryList.add("三月");
categoryList.add("四月");
categoryList.add("五月");
categoryList.add("六月");
categoryList.add("七月");
categoryList.add("八月");
categoryList.add("九月");
categoryList.add("十月");
categoryList.add("十一月");
categoryList.add("十二月");
List<String> list1 = new ArrayList<String>();
List<String> list2 = new ArrayList<String>();
Map<String, List<String>> dataMap = new HashMap<String, List<String>>();
dataMap.put("李四", list1);
dataMap.put("王五", list2);
list1.add("1");
list1.add("2");
list1.add("3");
list1.add("4");
list1.add("5");
list1.add("6");
list1.add("7");
list1.add("8");
list1.add("9");
list1.add("10");
list1.add("11");
list1.add("12");
list2.add("x1");
list2.add("x2");
list2.add("x3");
list2.add("x4");
list2.add("x5");
list2.add("x6");
list2.add("x7");
list2.add("x8");
list2.add("x9");
list2.add("x10");
list2.add("x11");
list2.add("x12");
ChartXML chart = new ChartXML();
chart.setStyles(attributesMap);
// chart.setDataMultiChart(categoryList, dataMap);
chart.setDataColumn(list1, list2);
System.out.println(chart.getXMLString());
chart.writeToFile("d:/xmlFile3.txt");
}
}
package test.impl.util.flashUtil;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
public class ChartXML {
private Document doc; //xml文档对象
private Element chart; //chart对象,根节点
private Element categories;
/**
* 无参构造方法
*/
public ChartXML()
{
DocumentBuilderFactory dtbf = DocumentBuilderFactory.newInstance();
try
{
doc = dtbf.newDocumentBuilder().newDocument();
}
catch (ParserConfigurationException e)
{
e.printStackTrace();
}
chart = doc.createElement("chart");
doc.appendChild(chart);
}
/**
* 批量设置chart样式
* @param attributeMap
*/
public void setStyles(Map<String, String> attributeMap)
{
this.addAttributesToElement(chart, attributeMap);
}
/**
* 设置chart单个样式
* 值为字符串的样式
* @param key
* @param value
*/
public void setStyle(String styleName, String value)
{
chart.setAttribute(styleName,value);
}
/**
* 设置chart单个样式
* 值为int型样式
* @param key
* @param value
*/
public void setStyle(String styleName, int value)
{
chart.setAttribute(styleName, value+"");
}
/*********************单型图表数据加载方法 start***********************/
/**
*
*/
public void setMapData(Map<String,Integer> chartMap)
{
Iterator<String> it = chartMap.keySet().iterator();
while(it.hasNext())
{
String key = it.next();
Element child = createChild(chart, "set");
child.setAttribute("label", key);
child.setAttribute("value", chartMap.get(key)+"");
child.setAttribute("displayValue", chartMap.get(key)+"");
}
}
/**
* 加载简单型图表数据
* @param labelList
* @param valueList
*/
// public void setSimpleChartData(List<String> labelList, List<String> valueList)
public void setSimpleChartData(List<String> labelList, List valueList)
{
int len = labelList.size()<valueList.size()?labelList.size():valueList.size();
for(int i=0; i<len; i++)
{
Element child = createChild(chart, "set");
child.setAttribute("label", labelList.get(i));
child.setAttribute("value", valueList.get(i).toString());
}
}
/**
* 加载线图数据
* @param labelList
* @param valueList
*/
// public void setLineData(List<String> labelList, List<String> valueList)
public void setLineData(List<String> labelList, List valueList)
{
int len = labelList.size()<valueList.size()?labelList.size():valueList.size();
for(int i=0; i<len; i++)
{
Element child = createChild(chart, "set");
child.setAttribute("label", labelList.get(i));
child.setAttribute("value", valueList.get(i).toString());
}
}
/**
* 饼图的数据加载
* @param lableList
* @param valueList
*/
// public void setDataPie(List<String> labelList, List<String> valueList)
public void setDataPie(List<String> labelList, List valueList)
{
int len = labelList.size()<valueList.size()?labelList.size():valueList.size();
for(int i=0; i<len; i++)
{
Element child = createChild(chart, "set");
child.setAttribute("label", labelList.get(i));
child.setAttribute("value", valueList.get(i).toString());
child = null;
}
Element styles = createChild(chart, "styles");
Element definition = createChild(styles, "definition");
Element style = createChild(definition, "style");
style.setAttribute("name", "myLegendFont");
style.setAttribute("type", "font");
style.setAttribute("size", "12");
style.setAttribute("color", "1C6700");
style.setAttribute("bold", "0");
Element application = createChild(styles, "application");
Element apply = createChild(application, "apply");
apply.setAttribute("toObject", "Legend");
apply.setAttribute("styles", "myLegendFont");
}
// <styles>
// <definition>
// <style name='myLegendFont' type='font' size='12' color='1C6700' bold='0' />
// </definition>
// <application>
// <apply toObject='Legend' styles='myLegendFont' />
// </application>
// </styles>
/**
* 饼图数据加载 (重载)
* @param dataMap
*/
public void setDataPie(Map<String, String> dataMap)
{
Set<String> set = dataMap.keySet();
Iterator<String> it = set.iterator();
while(it.hasNext())
{
Element child = createChild(chart, "set");
String key = it.next();
child.setAttribute(key, dataMap.get(key));
child = null;
}
}
public void setDataColumn(Map<String, String> dataMap)
{
Set<String> set = dataMap.keySet();
Iterator<String> it = set.iterator();
while(it.hasNext())
{
Element child = createChild(chart, "set");
String key = it.next();
child.setAttribute(key, dataMap.get(key));
child = null;
}
}
// public void setDataColumn(List<String> lableList, List<String> valueList)
public void setDataColumn(List<String> lableList, List valueList)
{
for(int i=0; i<valueList.size(); i++)
{
Element child = createChild(chart, "set");
child.setAttribute("label", lableList.get(i));
child.setAttribute("value", valueList.get(i).toString());
child = null;
}
}
/*********************单型图表数据加载方法 start***********************/
/*********************复合型图表数据加载方法 start***********************/
/**
* 利用JDK6的可变参数
*/
// public void setDataMultiChart(List<String> categoryList, List<String> seriesNameList, List<String>...dataLists)
public void setDataMultiChart(List<String> categoryList, List<String> seriesNameList, List...dataLists)
{
Element categories = createChild(chart, "categories");
Element category = null;
for(int i=0; i<categoryList.size(); i++)
{
category = createChild(categories, "category");
category.setAttribute("label", categoryList.get(i));
}
//获取最小索引,以免发生访问越界
int len = seriesNameList.size()<dataLists.length?seriesNameList.size():dataLists.length;
Element dataset = null;
Element set = null;
String seriesName = null;
for(int i=0; i<len; i++)
{
dataset = createChild(chart, "dataset");
seriesName = seriesNameList.get(i);
//若以c:开头,则表示为颜色
if(seriesName.startsWith("color:"))
{
String[] strs = seriesName.split(":");
dataset.setAttribute("color", strs[1]);
}
else
{
//否则表示数据集名称
dataset.setAttribute("seriesName", seriesNameList.get(i));
}
List dataList = dataLists[i];
for(int j=0; j<categoryList.size(); j++)
{
set = createChild(dataset, "set");
set.setAttribute("value", dataList.get(j).toString());
}
}
}
/**
* 添加category列表
* @param categoryList
*/
public void setChartCategory(List categoryList)
{
Element categories = createChild(chart, "categories");
Element category = null;
for(int i=0; i<categoryList.size(); i++)
{
category = createChild(categories, "category");
category.setAttribute("label", categoryList.get(i).toString());
}
}
/**
* 增加Category
* @param categoryName
*/
public void addChartCategory(String categoryName)
{
if(null == categories)
{
categories = createChild(chart, "categories");
}
Element category = createChild(categories, "category");
category.setAttribute("label", categoryName);
}
/**
* 增加Category
* 自动生成1~MaxCategory的categories
* @param categoryName
*/
public void addChartCategory(int MaxCategory, int step)
{
if(null==categories && MaxCategory>0)
{
categories = createChild(chart, "categories");
}
int min = 1;
if(step%2==0)
{
min = 2;
}
for(int i=1; i<=MaxCategory; i+=step)
{
Element category = createChild(categories, "category");
category.setAttribute("label", i+"");
}
}
public void addChartCategory(int minCategory, int MaxCategory, int step)
{
if(null==categories && MaxCategory>0)
{
categories = createChild(chart, "categories");
}
for(int i=minCategory; i<=MaxCategory; i+=step)
{
Element category = createChild(categories, "category");
category.setAttribute("label", i+"");
}
}
/**
* 增加Category
* @param categoryName
*/
public void addChartCategory(Object categoryName)
{
if(null == categories)
{
categories = createChild(chart, "categories");
}
Element category = createChild(categories, "category");
category.setAttribute("label", categoryName.toString());
}
/**
* 增加dataset
* @param categoryName
*/
public Element addChartDataset(String seriesName)
{
Element dataset = createChild(chart, "dataset");
dataset.setAttribute("seriesName", seriesName);
return dataset;
}
/**
* 添加数据组列表 datasets
* @param seriesNameList
* @param dataLists
*/
public void addMultiChart(List<String> seriesNameList, List...dataLists)
{
Element dataset = null;
Element set = null;
for(int i=0; i<seriesNameList.size(); i++)
{
dataset = createChild(chart, "dataset");
dataset.setAttribute("seriesName", seriesNameList.get(i));
List dataList = dataLists[i];
for(int j=0; j<dataList.size(); j++)
{
set = createChild(dataset, "set");
set.setAttribute("value", dataList.get(j).toString());
}
}
}
/**
* 在chartXML中添加一组数据 dataset
* @param seriesName
* @param dataList
*/
public void addMultiChart(String seriesName, List dataList)
{
Element dataset = createChild(chart, "dataset");
dataset.setAttribute("seriesName", seriesName);
Element set = null;
for(int j=0; j<dataList.size(); j++)
{
set = createChild(dataset, "set");
set.setAttribute("value", dataList.get(j).toString());
}
}
/**
* 重载
* @param categoryList
* @param dataMap
*/
public void setDataMultiChart(List<String> categoryList, Map<String, List<String>> dataMap)
{
//+++++++++++++++++++++++++++++++++++++++++++++++++++++//
Set<String> keyset = dataMap.keySet();
Iterator<String> it = keyset.iterator();
List<String> data1 = null;
while(it.hasNext())
{
data1 = dataMap.get(it.next());
break;
}
//获取最小值,以防止集合访问越界,更为健壮
int len = data1.size()>categoryList.size()?categoryList.size():data1.size();
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
Element categories = null;
Element category = null;
//生成父category标签
categories = createChild(chart, "categories");
//categories
//批量生成categories标签
for(int i=0; i<len; i++)
{
category = createChild(categories, "category");
category.setAttribute("label", categoryList.get(i));
}
//dataset标签和set标签生成
Element dataset = null;
Element set = null;
it = keyset.iterator();
List<String> dataList = null;
String seriesName = null;
while(it.hasNext())
{
seriesName = it.next();
dataList = dataMap.get(seriesName);
dataset = createChild(chart, "dataset");
dataset.setAttribute("seriesName", seriesName);
for(int i=0; i<len; i++)
{
set = createChild(dataset, "set");
set.setAttribute("value", dataList.get(i));
}
}
}
/**
* 设置线图的通用样式
*/
public void setLineUniversalStyle(String caption, String xName, String yName, int xStep, int yStep, int HlineNum, int VlineNum)
{
//根据valueList值的个数来确定水平线的条数
//根据valueList中的最大值来确定竖直线的条数
//根据valueList中的最大值来确定y轴值的步调
}
public void setSmartStyle(List<String> valueList)
{
}
public void setNPVchartData(List<String> categoryList, List<String> pillarDataList, List<String> lineDataList)
{
//生成categories
Element categories = null;
categories = createChild(chart, "categories");
Element category = null;
for(String str : categoryList)
{
category = createChild(categories, "category");
category.setAttribute("label", str);
}
//生成柱状图数据
Element dataset = createChild(chart, "dataset");
dataset.setAttribute("seriesName", "Years");
Element set = null;
for(String str : pillarDataList)
{
set = createChild(dataset, "set");
set.setAttribute("value", str);
}
//生成线图数据
dataset = null;
dataset = createChild(chart, "dataset");
dataset.setAttribute("seriesName", "USD");
dataset.setAttribute("color", "97B854");
dataset.setAttribute("renderAs", "Line");
dataset.setAttribute("parentYAxis", "S");
for(String str : lineDataList)
{
set = createChild(dataset, "set");
set.setAttribute("value", str);
}
}
public void setBusinessRoiLineData(List<String> categoryList, List<String> lineDataList1, List<String> lineDataList2, List<String> lineDataList3)
{
//生成categories
Element categories = null;
categories = createChild(chart, "categories");
Element category = null;
for(String str : categoryList)
{
category = createChild(categories, "category");
category.setAttribute("label", str);
}
//生成线图1数据
Element dataset = createChild(chart, "dataset");
dataset.setAttribute("seriesName", "PV of cash out");
dataset.setAttribute("color", "FF0000");
dataset.setAttribute("renderAs", "Line");
Element set = null;
for(String str : lineDataList1)
{
set = createChild(dataset, "set");
set.setAttribute("value", str);
}
//生成线图2数据
dataset = null;
dataset = createChild(chart, "dataset");
dataset.setAttribute("seriesName", "PV of cash in");
dataset.setAttribute("color", "33A9E0");
dataset.setAttribute("renderAs", "Line");
for(String str : lineDataList2)
{
set = createChild(dataset, "set");
set.setAttribute("value", str);
}
//生成线图3数据
dataset = null;
dataset = createChild(chart, "dataset");
dataset.setAttribute("seriesName", "PV of net cash");
dataset.setAttribute("color", "99BA56");
dataset.setAttribute("renderAs", "Line");
dataset.setAttribute("parentYAxis", "S");
for(String str : lineDataList3)
{
set = createChild(dataset, "set");
set.setAttribute("value", str);
}
}
// <category label='831' />
// <category label='832' />
//
// </categories>
// <dataset seriesName="A.C.off">
// <set value='32.7' />
// <set value='14.980165361182678' />
// <set value='33.33602555575811' />
// <set value='23.572602753844826' />
// <set value='34.13603623082115' />
//
///*********************复合型图表数据加载方法 start***********************/
//
//
// /**
// * 创建元素的私有方法
// * @param tagName
// * @return
// */
public Element createElement(String tagName)
{
return doc.createElement(tagName);
}
/**
* 创建元素的子元素
* @param parentTag
* @param childTagName
* @return
*/
public Element createChild(Element parentTag, String childTagName)
{
Element child = doc.createElement(childTagName);
parentTag.appendChild(child);
return child;
}
/**
* 为元素批量添加属性
* @param element
* @param attributesMap
* @return
*/
public Element addAttributesToElement(Element element, Map<String,String> attributesMap)
{
Set<String> set = attributesMap.keySet();
Iterator<String> it = set.iterator();
if(set.size()<=0)
{
return element;
}
String key = null;
while(it.hasNext())
{
key = it.next();
element.setAttribute(key,attributesMap.get(key));
}
return element;
}
/**
* 获取整个xml文档的字符串表示
* @return
*/
public String getXMLString()
{
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = null;
try {
transformer = tf.newTransformer();
} catch (TransformerConfigurationException e1) {
e1.printStackTrace();
}
DOMSource doms = new DOMSource(doc);
StringWriter sw = new StringWriter();
StreamResult sr = new StreamResult(sw);
try {
transformer.transform(doms, sr);
} catch (TransformerException e) {
e.printStackTrace();
}
String xmlString = sw.toString();
return xmlString;
}
public void writeToFile(String filePath) throws Exception
{
OutputStream os = new FileOutputStream(filePath);
os.write(this.getXMLString().getBytes());
}
public static void main(String[] args) throws Exception {
Map<String, String> attributesMap = new HashMap<String, String>();
attributesMap.put("caption", "深圳气温统计");
attributesMap.put("xx", "深圳气温统计");
attributesMap.put("yy", "深圳气温统计");
attributesMap.put("zz", "深圳气温统计");
List<String> categoryList = new ArrayList<String>();
categoryList.add("一月");
categoryList.add("二月");
categoryList.add("三月");
categoryList.add("四月");
categoryList.add("五月");
categoryList.add("六月");
categoryList.add("七月");
categoryList.add("八月");
categoryList.add("九月");
categoryList.add("十月");
categoryList.add("十一月");
categoryList.add("十二月");
List<String> list1 = new ArrayList<String>();
List<String> list2 = new ArrayList<String>();
Map<String, List<String>> dataMap = new HashMap<String, List<String>>();
dataMap.put("李四", list1);
dataMap.put("王五", list2);
list1.add("1");
list1.add("2");
list1.add("3");
list1.add("4");
list1.add("5");
list1.add("6");
list1.add("7");
list1.add("8");
list1.add("9");
list1.add("10");
list1.add("11");
list1.add("12");
list2.add("x1");
list2.add("x2");
list2.add("x3");
list2.add("x4");
list2.add("x5");
list2.add("x6");
list2.add("x7");
list2.add("x8");
list2.add("x9");
list2.add("x10");
list2.add("x11");
list2.add("x12");
ChartXML chart = new ChartXML();
chart.setStyles(attributesMap);
// chart.setDataMultiChart(categoryList, dataMap);
chart.setDataColumn(list1, list2);
System.out.println(chart.getXMLString());
chart.writeToFile("d:/xmlFile3.txt");
}
}
- 777
- 777
- 777
- 777
- 777
- 777
- 777
- 777
- 777
- chmod 777
- 777D
- chmod 777 * -R命令
- chmod 777 设置权限
- chmod 777 修改权限
- what does chmod 777
- chmod 权限777
- chmod -R 777 filename
- chmod 777 修改权限
- iphone core data 基础操作
- 数据库常用操作3
- 【VC报错】LeaveCriticalSection中断异常
- IMP-00041: 警告: 创建的对象带有编译警告解决办法
- Android eclipse中程序调试
- 777
- 51单片机的data,xdata,code
- hadoop操作命令
- poj 3984 迷宫问题(bfs)
- C#实现WinForm窗口最小化到系统托盘
- Ruby多进程并行抓取网页
- MFC线程写类似中断程序
- Debug.WriteLine 无输出的解决
- 关于Android软键盘弹出,会把原来的界面挤上去的问题