DataFactoryBase

package com.ztev.chartservlet;

import java.io.OutputStream;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.DOMImplementation;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
/**
 * Document对象和XML对象的处理
 * @author 朱志国 zhu.zhiguo@hotmail.com
 *
 */
public class DataFactoryBase {

 //添加节点  
 public void addXMLNode(Element nodeName,Element newNode,Document doc){
      try {
        if( nodeName.getNodeName()==null ){
           //System.out.println("该节点不存在!");
        }else{
           doc.createElement("newNode");
           nodeName.appendChild(newNode); 
       }
          }catch(Exception ex){
              ex.printStackTrace();
          }
 }

 //添加节点属性
 public void addXMLNodeAttribute(Element nodeName,String attribute,String value){
  try{
     if(nodeName.getNodeName()==null){
        System.out.println("该节点不存在!");
     }else{
     nodeName.setAttribute(attribute,value); 
     }
    
     }catch(Exception ex){
         ex.printStackTrace();
     }  
 }       
 
 //如果查询的结果全为空,则生成NullInfo节点的XML
    public void NullInfoNode(Document doc,Element RootNode,String strInfo){
   
  Element chart=doc.createElement("chart");
  addXMLNode(RootNode,chart,doc);
  addXMLNodeAttribute(chart,"color","red");
  addXMLNodeAttribute(chart,"caption", strInfo + "无数据!");
  addXMLNodeAttribute(chart,"type","2");
  addXMLNodeAttribute(chart,"showControl","true");  
 }                      

 
 /**
  * 生成操作XML的Doc类
  * @param caption 图形标题
  * @return
  */
 public Document BuilderDocument(String caption){
  try{
   //定义工厂 API,使应用程序能够从 XML 文档获取生成 DOM 对象树的解析器
   DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
   factory.setNamespaceAware(true);
   //应用程序员可以用DocumentBuilder从 XML中获取一个 Document
   DocumentBuilder builder = factory.newDocumentBuilder();
   //DOMImplementation 接口为执行独立于文档对象模型的任何特定实例的操作提供了许多方法
   DOMImplementation impl  = builder.getDOMImplementation();
   //创建具有文档元素的指定类型的 DOM Document 对象
   Document doc = impl.createDocument(null,"chart",null);
   Element chart = doc.getDocumentElement();
   chart.setAttribute("caption", caption);//标题
   chart.setAttribute("bgColor", "99CCFF,FFFFFF");//背景色
   chart.setAttribute("baseFontSize", "12");//字体大小
   chart.setAttribute("font", "sinsum");//字体
   chart.setAttribute("bgAlpha", "40,100");
   chart.setAttribute("bgRatio", "0,100");
   chart.setAttribute("bgAngle", "360");
   chart.setAttribute("showBorder", "1");
   return doc;
  } 
  catch(Exception ex){   
   ex.printStackTrace();
   return null;
  }
 }
 
 //把Doc类序列化为一个XML流
 public void SerialDocument(OutputStream outStream, Document doc){
  try{
   //通过 TransformerFactory.newTransformer 方法获取此类的实例
   TransformerFactory tFactory = TransformerFactory.newInstance();
   //可以使用此实例处理来自不同源的 XML,并将转换输出写入各种接收器
   Transformer transformer = tFactory.newTransformer();
         //以 Document Object Model(DOM)树的形式充当转换 Source 树的持有者
   DOMSource source = new DOMSource(doc); 
   //充当转换结果的持有者,可以为 XML、纯文本、HTML 或某些其他格式的标记
   StreamResult result = new StreamResult(outStream);
   //把 XML资源文件转换成Result结果集.
   transformer.transform(source, result);
  }
  catch(Exception ex){
   ex.printStackTrace();  
  }
 }
 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
     
 }

}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值