package net.sourceforge.cruisecontrol.report;
import java.io.File;
import java.io.FileWriter;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
/**
* @author Administrator
*/
public class CreateReport {
static Element chartElement;
public static void createReport(List<ReportVO> list, List<ReportVO> newList) {
String projectName = list.get(0).getProjectName();
String url = "D:/CruiseControl/webapps/cruisecontrol/fusioncharts/dataXml/" + projectName + ".xml";
File file = new File(url);
if (file.exists()) {
file.delete();
}
try {
// 使用DocumentHelper.createDocument方法建立一个文档实例
Document document = DocumentHelper.createDocument();
// 使用addElement方法方法创建根元素
chartElement = document.addElement("chart");
chartElement.addAttribute("palette", "2");
chartElement.addAttribute("caption", "代码检查趋势图");
chartElement.addAttribute("subCaption", projectName + "子系统");
chartElement.addAttribute("showValues", "0");
chartElement.addAttribute("divLineDecimalPrecision", "1");
chartElement.addAttribute("limitsDecimalPrecision", "1");
chartElement.addAttribute("PYAxisName", "数量");
chartElement.addAttribute("formatNumberScale", "0");
// 使用addElement方法向chart元素添加categories子元素
Element categoriesElement = chartElement.addElement("categories");
for (int i = 0; i < list.size(); i = i + 3) {
ReportVO reportVO = list.get(i);
Element nweElement = categoriesElement.addElement("category");
nweElement.addAttribute("label", reportVO.getBuildTime());
}
setXml("CheckStyle", list);
setXml("FindBugs", list);
setXml("PMD", list);
Element projectNameElement = chartElement.addElement("project");
for (ReportVO reportVO : newList) {
Element newFindbugsElement = projectNameElement.addElement(reportVO.getPlugName());
newFindbugsElement.addAttribute("errorNumber", reportVO.getErrorNumber());
}
projectNameElement.addAttribute("projectName", list.get(0).getProjectName());
// 输出数据到文件
XMLWriter output;
// 输出格式化
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("GBK");
output = new XMLWriter(new FileWriter(url), format);
output.write(document);
output.close();
} catch (Exception e) {
e.printStackTrace();
}
CreateXML.createXml();
}
public static void setXml(String plugName, List<ReportVO> list) throws DocumentException {
Element findbugsElement = chartElement.addElement("dataset");
findbugsElement.addAttribute("seriesName", plugName);
findbugsElement.addAttribute("renderAs", "Line");
for (ReportVO reportVO : list) {
if (reportVO.getPlugName().equals(plugName)) {
Element setElement = findbugsElement.addElement("set");
setElement.addAttribute("value", reportVO.getErrorNumber());
}
}
}
}
package net.sourceforge.cruisecontrol.report;
import java.io.File;
import java.io.FileWriter;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public class CreateXML {
static Element CheckStyleElement;
static Element pmdElement;
static Element FindBugsElement;
static Element categoriesElement;
static SAXReader reader = new SAXReader();
public static void createXml() {
String url = "D:/CruiseControl/webapps/cruisecontrol/fusioncharts/dataXml/data.xml";
File file = new File(url);
if (file.exists()) {
file.delete();
}
try {
// 使用DocumentHelper.createDocument方法建立一个文档实例
Document document = DocumentHelper.createDocument();
// 使用addElement方法方法创建根元素
Element chartElement = document.addElement("chart");
chartElement.addAttribute("caption", "各子系统代码检查结果对比图");
chartElement.addAttribute("showLabels", "1");
chartElement.addAttribute("showvalues", "0");
chartElement.addAttribute("limitsDecimalPrecision", "1");
chartElement.addAttribute("decimals", "0");
// 使用addElement方法向chart元素添加categories子元素
categoriesElement = chartElement.addElement("categories");
CheckStyleElement = chartElement.addElement("dataset");
CheckStyleElement.addAttribute("seriesName", "CheckStyle");
CheckStyleElement.addAttribute("color", "AFD8F8");
CheckStyleElement.addAttribute("showValues", "0");
pmdElement = chartElement.addElement("dataset");
pmdElement.addAttribute("seriesName", "PMD");
pmdElement.addAttribute("color", "F6BD0F");
pmdElement.addAttribute("showValues", "0");
FindBugsElement = chartElement.addElement("dataset");
FindBugsElement.addAttribute("seriesName", "FindBugs");
FindBugsElement.addAttribute("color", "8BBA00");
FindBugsElement.addAttribute("showValues", "0");
setXml("basic");
setXml("device");
setXml("dispatch");
setXml("prod");
setXml("ss");
setXml("tech");
setXml("workorder");
// 输出数据到文件
XMLWriter output;
// 输出格式化
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("GBK");
output = new XMLWriter(new FileWriter(url), format);
output.write(document);
output.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void setXml(String projectName) {
Document newDocument;
try {
newDocument =
reader.read(new File("D:/CruiseControl/webapps/cruisecontrol/fusioncharts/dataXml/" + projectName
+ ".xml"));
Element rootElm = newDocument.getRootElement();
Element memberElm = rootElm.element("project");
Element newElm = categoriesElement.addElement("category");
newElm.addAttribute("label", memberElm.attribute("projectName").getText());
newElm = CheckStyleElement.addElement("set");
newElm.addAttribute("value", memberElm.element("CheckStyle").attribute("errorNumber").getText());
newElm = pmdElement.addElement("set");
newElm.addAttribute("value", memberElm.element("PMD").attribute("errorNumber").getText());
newElm = FindBugsElement.addElement("set");
newElm.addAttribute("value", memberElm.element("FindBugs").attribute("errorNumber").getText());
} catch (DocumentException e) {
e.getMessage();
}
}
}
分享到:
相关推荐
dom4j读写xmldom4j读写xmldom4j读写xmldom4j读写xmldom4j读写xml
NULL 博文链接:https://sxpujs.iteye.com/blog/375485
Dom4j 读写 XML
java中dom4j读写XML(项目中含所需要的jar包)
基于dom4j的读写xml文件的工具包。封装了dom4j操作xml文档的常和方法。 支持两种读写方法。1:针对小文件的读取整个文档,2:针对大文件的,逐行读取。读到几百M文件毫无压力。
Dom4j解析教程。详细讲解如何使用dom4j解析xml,简单易懂。
简单的读取xml,利用dom4j读写xml实例xmldemo
完整的讲解一个dom4j对xml的增删改查
dom4j是非常优秀的xml解析包,操作起来读写xml非常方便。把自己写的一个读写dom4j.xml实例共享给大家
使用dom4j对xml的读写(这个感觉比jdom功能好点,但是复杂一点点)
使用dom4j读写XML文档 1.获取文档的根节点. Element rootElm = document.getRootElement(); 2.取得某节点的单个子节点. Element memberElm=root.element("member");// "member"是节点名 3.取得节点的文字 String ...
使用DOM4J对XML文件操作-添加、修改、删除、获取元素节点
总结DOM、SAX、JDOM、DOM4J读写xml文档的多种方法。
例题采用的是dom4j对xml的操作,包含了对xml的增加删除修改操作.
使用dom4j对xml文档进行增删改. 查询就不用说了,使用elements(....)/element(...)/attributeValue()/getText()等方法
java操作xml源码 操作方式包括:dom和dom4j dom是W3C规范,比较典型的JAVA操作XML方式,适用于小型文件。 dom4j是开源的性能以及效率最好的,也是一个典型例子。...采用dom4j写xml 以及dom4j方式读XML
1、xml文档解析 2、 dom4j解析xml 3、实现xml文件解析 xml字符串解析 xml MAP键值对解析 4、实现xml写入与生成文件
dom4j解析xml文件的压缩包,完整版。对jdom进行了封装。包含源码,jar包以及所需的全部内容。
Java用dom4j对xml进行增删改查操作,提供这个资料给大家参考。