`
julylin
  • 浏览: 49526 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

dom4j读写XML

    博客分类:
  • J2EE
 
阅读更多

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读写xml文档实例

    DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了简单且高效的API来读取、写入、修改以及操作XML。在这个实例中,我们将深入理解DOM4J库如何帮助我们处理XML文档,并通过实际操作来熟悉其核心功能。 XML...

    读写超大类xml文件,使用dom4j读写xml文件的工具类

    基于dom4j的读写xml文件的工具包。封装了dom4j操作xml文档的常和方法。 支持两种读写方法。1:针对小文件的读取整个文档,2:针对大文件的,逐行读取。读到几百M文件毫无压力。

    java中dom4j读写XML

    Java中的DOM4J库是一个非常流行的、开源的Java XML API,它提供了强大的XML处理功能,包括XML的读取、创建、修改以及写入。DOM4J是基于DOM模型的,但相比标准的Java DOM,它提供了更加简洁和高效的API,使得开发者在...

    Dom4j下载及使用Dom4j读写XML简介

    Dom4j解析教程。详细讲解如何使用dom4j解析xml,简单易懂。

    使用dom4j对xml的读写

    **使用DOM4J对XML的读写** DOM4J是一个非常强大的Java库,专门用于处理XML文档。它提供了丰富的API,使得XML的读取、创建、修改和解析变得简单易行。相较于JDOM,DOM4J确实提供了更多的功能,虽然在学习曲线方面...

    Dom4j读写XML

    以下是对Dom4j读写XML的详细讲解: 一、Document对象相关 1. **读取XML文件**:通过`SAXReader`实例化并调用`read()`方法,可以将XML文件读取为`Document`对象。例如: ```java SAXReader reader = new ...

    dom4j解析xml详解

    DOM4J的核心优势之一在于其丰富的接口体系,这些接口定义在`org.dom4j`包内,提供了对XML文档进行读写、查询、修改等操作的能力。 1. **Attribute**: 代表XML中的属性,可用于获取和设置属性值。 2. **Branch**: ...

    dom4j_XML.rar_DOM4J_dom4j xml java_java xml_读写xml

    例子比较简单”的描述中,我们可以推断出这个压缩包包含了一些关于如何使用DOM4J进行XML读写的基本示例。以下是对这些关键知识点的详细解释: 1. **XML解析**:DOM4J支持两种解析XML文档的方式:SAX(Simple API ...

    dom4j读写xml

    总结,DOM4J作为一款强大的XML处理工具,不仅提供了丰富的API,还支持高效的读写操作和XPath查询,使得开发者能够轻松地进行XML文档的处理和操作。无论是在小型项目还是大型企业级应用中,DOM4J都是处理XML不可或缺...

    Dom4J生成XML的完整方法希望大家能用到

    ### Dom4J生成XML的完整方法详解 在Java开发领域,处理XML文档是常见的需求之一。Dom4J作为一款优秀的Java XML API,...掌握以上知识点,开发者即可熟练运用Dom4J生成复杂的XML文档,满足项目中对XML数据处理的需求。

    dom4j解析xml文件(增删改查)

    在“dom4j解析xml文件(增删改查)”这个主题中,我们将深入探讨如何使用DOM4J来实现XML文档的四种基本操作:增加元素、删除元素、更新元素内容以及查询元素。 首先,让我们了解DOM4J的基本用法。在解析XML文件时,...

    dom4j读写xml文件

    在Java领域,XML常用于数据交换、配置文件以及存储结构化数据,因此理解和掌握如何使用dom4j对XML文件进行操作是至关重要的。 DOM(Document Object Model)是一种用于表示XML文档的树形结构,而dom4j是基于Java的...

    使用DOM4J对XML文件操作-添加、修改、删除、获取元素节点

    DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活且高效的API,使得XML的解析、创建、修改和查询变得简单。在本教程中,我们将深入探讨如何使用DOM4J来执行基本的XML操作,包括添加元素、修改元素、删除...

    dom4j解析xml文件的压缩包

    6. **Namespace支持**:DOM4J提供了对XML命名空间的全面支持,可以方便地处理包含命名空间的XML文档。 7. **DocumentType支持**:对于包含DOCTYPE声明的XML文档,DOM4J可以处理这些声明,并提供对应的DocumentType...

    用dom4j对xml进行增删改查操作参考资料

    在提供的资源中,"dom4j读写XML及保存批量数据对象 - 五月天的博客 - ITeye技术网站.bmp"可能是一个教程页面的截图,它会详细解释这些操作的实现步骤。如果你遇到任何问题,可以参考这个截图或者在ITeye技术网站上...

    使用dom4j读写XML文档

    ### 使用dom4j读写XML文档的关键知识点 #### 一、简介与安装 - **DOM4J** 是一款用于处理XML文档的Java库,它提供了简单且强大的API来解析、创建、修改XML文档。 - 官方网站:[http://www.dom4j.org/]...

    利用dom4j读写xml实例xmldemo

    本实例"xmldemo"将向我们展示如何利用DOM4J进行XML的读写操作。 首先,理解DOM4J的核心概念。DOM4J使用了Document对象来表示整个XML文档,Element代表XML的元素节点,Attribute代表属性,Text代表文本内容。通过...

    dom4j解析xml

    ### DOM4J解析XML知识点详解 ...通过结合使用DOM4J的基本类和XPath表达式,可以轻松地实现对XML文档的查询和修改。无论是对于开发人员还是对于那些需要频繁处理XML数据的应用程序来说,DOM4J都是一个非常有价值的工具。

    dom4j解析XML所需jar包

    这些功能使得对XML文档的维护和更新变得非常方便。 6. **XPath和XSLT转换**:除了基本的XML操作,DOM4J还能配合XPath执行XSLT(eXtensible Stylesheet Language Transformations)转换,实现XML到XML或XML到其他...

Global site tag (gtag.js) - Google Analytics