XmlFileTools.java
Upload User: gtz2001
Upload Date: 2016-12-29
Package Size: 2489k
Code Size: 16k
Category:

WEB Mail

Development Platform:

Java

  1. package net.meybo.util;
  2. import java.io.*;
  3. import org.apache.log4j.Logger;
  4. import org.dom4j.Document;
  5. import org.dom4j.io.SAXReader;
  6. /***************************************
  7.  * <p>Title: 邮件服务器</p>
  8.  * <p>Description: XML文件处理程序</p>
  9.  * <p>Copyright: Copyright (c) 2006</p>
  10.  * <p>Company: 脉博软件</p>
  11.  * @author 阚吉彬
  12.  * @version 1.0
  13.  ***************************************/
  14. public class XmlFileTools {
  15. private static final Logger logger = (Logger) Logger.getLogger(XmlFileTools.class.getName());
  16.   public XmlFileTools() {
  17.   }
  18.   public static synchronized Document load(String fileName) {
  19.   Document document = null;
  20.       try {
  21.         SAXReader reader = new SAXReader();      
  22.         File file=new File(fileName);
  23.         document = file.exists()?reader.read(fileName):null;
  24.                
  25.       } catch(Exception e) {
  26.         System.out.println("Load xml string error!"+ e);
  27.       }
  28.       return document;
  29.   }
  30.   public static synchronized boolean write(String fileName,Document doc)
  31.   {
  32.   boolean ret=false;
  33.   try{
  34.   Writer writer=new FileWriter(fileName); 
  35.   doc.setXMLEncoding("gbk");
  36.   writer.write(doc.asXML());
  37.   //doc.write(writer);
  38.   writer.close();
  39.   ret=true;
  40.   }
  41.   catch(Exception e)
  42.   {
  43.   logger.error("写文件错误!"+e);
  44.   }
  45.   return ret;
  46.   }
  47.   /*
  48.   //create empty xml file
  49.   public synchronized static boolean createFile(String filePath,String rootNodeName){
  50.     File file=new File(filePath);
  51.     if(!file.exists()){   //
  52.        try{
  53.          file.createNewFile();
  54.          DataOutputStream dos = new DataOutputStream(new FileOutputStream(file));
  55.          dos.writeBytes("<?xml version='1.0' encoding='UTF-8'?><" + rootNodeName +"></" + rootNodeName + ">");
  56.          dos.close();
  57.          dos = null;
  58.        }
  59.        catch(Exception e){
  60.          LogManage.addLog("exception", DateFormat.formatDateYMDHMS(new java.util.Date())+" xmlFileManage1:"+e);
  61.          logger.error(e.getMessage());
  62.          return false;
  63.        }
  64.     }
  65.     return true;
  66.   }
  67.   //add one subnode
  68.   public synchronized static int addNode(String filePath,String nodeName,String subNodeName,String subNodeValue) {
  69.     int reValue=0;   //succesful
  70.     DocumentBuilderFactory factory =null;
  71.     DocumentBuilder builder =null;
  72.     Document doc =null;
  73.     TransformerFactory tFactory =null;
  74.     Transformer transformer = null;
  75.     DOMSource source =null;
  76.     StreamResult result =null;
  77.     if(subNodeValue.trim().equals("")) subNodeValue=" ";
  78.     try{
  79.       factory = DocumentBuilderFactory.newInstance();
  80.       builder = factory.newDocumentBuilder();
  81.       doc = builder.parse(filePath);
  82.       doc.normalize();
  83.       NodeList links =doc.getElementsByTagName(nodeName);
  84.       for(int i=0;i<links.getLength();i++){
  85.         Element link=(Element)links.item(i);
  86.         Text textseg;   //text value subnode
  87.         Element name =doc.createElement(subNodeName);   //sub name node
  88.         textseg = doc.createTextNode(subNodeValue);    //node value
  89.         name.appendChild(textseg);
  90.         link.appendChild(name);
  91.       }
  92.       tFactory = TransformerFactory.newInstance();
  93.       transformer = tFactory.newTransformer();
  94.       source = new DOMSource(doc);
  95.       result = new StreamResult(new java.io.File(filePath));
  96.       transformer.transform(source, result);
  97.     }
  98.     catch(Exception e){
  99.       LogManage.addLog("exception", DateFormat.formatDateYMDHMS(new java.util.Date())+" xmlFileManage2:"+e);
  100.       logger.error(e.getMessage());
  101.       reValue=2;    //error
  102.     }
  103.     finally{
  104.       doc = null;
  105.       builder = null;
  106.       factory = null;
  107.       result = null;
  108.       source = null;
  109.       transformer = null;
  110.       tFactory = null;
  111.     }
  112.     return reValue;
  113.   }
  114.   //add many subnode
  115.   public synchronized static int addNode(String filePath,String nodeName,String[] subNodeName,String[] subNodeValue) {
  116.     int reValue=0;   //succesful
  117.     DocumentBuilderFactory factory =null;
  118.     DocumentBuilder builder =null;
  119.     Document doc =null;
  120.     TransformerFactory tFactory =null;
  121.     Transformer transformer = null;
  122.     DOMSource source =null;
  123.     StreamResult result =null;
  124.     try{
  125.       factory = DocumentBuilderFactory.newInstance();
  126.       builder = factory.newDocumentBuilder();
  127.       doc = builder.parse(filePath);
  128.       doc.normalize();
  129.       NodeList links =doc.getElementsByTagName(nodeName);
  130.       for(int i=0;i<links.getLength();i++){
  131.         Element link=(Element)links.item(i);
  132.         int nodeNumber=link.getChildNodes().getLength();
  133.         if(nodeNumber==1){
  134.           Text textseg; //text value subnode
  135.           for (int m = 0; m < subNodeName.length; m++) {
  136.             Element name = doc.createElement(subNodeName[m]); //sub name node
  137.             if (subNodeValue[m].trim().equals(""))
  138.               subNodeValue[m] = " ";
  139.             textseg = doc.createTextNode(subNodeValue[m]); //node value
  140.             name.appendChild(textseg);
  141.             link.appendChild(name);
  142.           }
  143.         }
  144.       }
  145.       tFactory = TransformerFactory.newInstance();
  146.       transformer = tFactory.newTransformer();
  147.       source = new DOMSource(doc);
  148.       result = new StreamResult(new java.io.File(filePath));
  149.       transformer.transform(source, result);
  150.     }
  151.     catch(Exception e){
  152.       LogManage.addLog("exception", DateFormat.formatDateYMDHMS(new java.util.Date())+" xmlFileManage3:"+e);
  153.       logger.error("addNode Exception:"+e);
  154.       reValue=2;    //error
  155.     }
  156.     finally{
  157.       doc = null;
  158.       builder = null;
  159.       factory = null;
  160.       result = null;
  161.       source = null;
  162.       transformer = null;
  163.       tFactory = null;
  164.     }
  165.     return reValue;
  166.   }
  167.   //delete one subnode
  168.   public synchronized static int delNode(String filePath,String nodeName,String subNodeName,String subNodeValue) {
  169.     int reValue=0;   //succesful
  170.     DocumentBuilderFactory factory =null;
  171.     DocumentBuilder builder =null;
  172.     Document doc =null;
  173.     TransformerFactory tFactory =null;
  174.     Transformer transformer = null;
  175.     DOMSource source =null;
  176.     StreamResult result =null;
  177.     try{
  178.       factory = DocumentBuilderFactory.newInstance();
  179.       builder = factory.newDocumentBuilder();
  180.       doc = builder.parse(filePath);
  181.       doc.normalize();
  182.       NodeList links =doc.getElementsByTagName(nodeName);
  183.       for (int i=0;i<links.getLength();i++){
  184.         Element link=(Element)links.item(i);
  185.         NodeList names =link.getElementsByTagName(subNodeName);
  186.         for (int j=0;j<names.getLength();j++){
  187.           Element name=(Element)names.item(j);
  188.           String nodeValue=name.getFirstChild().getNodeValue().trim();
  189.           if(nodeValue.trim().toLowerCase().equals(subNodeValue.trim().toLowerCase())){
  190.              link.removeChild(name);
  191.              break;
  192.           }
  193.         }
  194.       }
  195.       tFactory = TransformerFactory.newInstance();
  196.       transformer = tFactory.newTransformer();
  197.       source = new DOMSource(doc);
  198.       result = new StreamResult(new java.io.File(filePath));
  199.       transformer.transform(source, result);
  200.     }
  201.     catch(Exception e){
  202.       LogManage.addLog("exception", DateFormat.formatDateYMDHMS(new java.util.Date())+" xmlFileManage4:"+e);
  203.       logger.error(e.getMessage());
  204.       reValue=2;    //error
  205.     }
  206.     finally{
  207.       doc = null;
  208.       builder = null;
  209.       factory = null;
  210.       result = null;
  211.       source = null;
  212.       transformer = null;
  213.       tFactory = null;
  214.     }
  215.     return reValue;
  216.   }
  217.   //del same level all sub node
  218.   public synchronized static int delAllSubNode(String filePath,String nodeName,String subNodeName,String subNodeValue) {
  219.     int reValue=0;   //succesful
  220.     DocumentBuilderFactory factory =null;
  221.     DocumentBuilder builder =null;
  222.     Document doc =null;
  223.     TransformerFactory tFactory =null;
  224.     Transformer transformer = null;
  225.     DOMSource source =null;
  226.     StreamResult result =null;
  227.     try{
  228.       factory = DocumentBuilderFactory.newInstance();
  229.       builder = factory.newDocumentBuilder();
  230.       doc = builder.parse(filePath);
  231.       doc.normalize();
  232.       NodeList roots =doc.getElementsByTagName("root");
  233.       Element root=(Element)roots.item(0);
  234.       NodeList links =doc.getElementsByTagName(nodeName);
  235.       for (int i=(links.getLength()-1);i>=0;i--){
  236.         Element link=(Element)links.item(i);
  237.         NodeList names =link.getElementsByTagName(subNodeName);
  238.         for (int j=0;j<names.getLength();j++){
  239.           Element name=(Element)names.item(j);
  240.           String nodeValue=name.getFirstChild().getNodeValue().trim();
  241.           if(nodeValue.trim().toLowerCase().equals(subNodeValue.trim().toLowerCase())){
  242.              root.removeChild(link);
  243.              //break;
  244.           }
  245.         }
  246.       }
  247.       tFactory = TransformerFactory.newInstance();
  248.       transformer = tFactory.newTransformer();
  249.       source = new DOMSource(doc);
  250.       result = new StreamResult(new java.io.File(filePath));
  251.       transformer.transform(source, result);
  252.     }
  253.     catch(Exception e){
  254.       LogManage.addLog("exception", DateFormat.formatDateYMDHMS(new java.util.Date())+" xmlFileManage5:"+e);
  255.       logger.error(e.getMessage());
  256.       reValue=2;    //error
  257.     }
  258.     finally{
  259.       doc = null;
  260.       builder = null;
  261.       factory = null;
  262.       result = null;
  263.       source = null;
  264.       transformer = null;
  265.       tFactory = null;
  266.     }
  267.     return reValue;
  268.   }
  269.   //modify subnode
  270.   public synchronized static int modifyNode(String filePath,String nodeName,String subNodeName,String subNodeValue,String newSubNodeValue) {
  271.     int reValue=0;   //succesful
  272.     DocumentBuilderFactory factory =null;
  273.     DocumentBuilder builder =null;
  274.     Document doc =null;
  275.     TransformerFactory tFactory =null;
  276.     Transformer transformer = null;
  277.     DOMSource source =null;
  278.     StreamResult result =null;
  279.     try{
  280.       factory = DocumentBuilderFactory.newInstance();
  281.       builder = factory.newDocumentBuilder();
  282.       doc = builder.parse(filePath);
  283.       doc.normalize();
  284.       NodeList links =doc.getElementsByTagName(nodeName);
  285.       for (int i=0;i<links.getLength();i++){
  286.         Element link=(Element)links.item(i);
  287.         NodeList names =link.getElementsByTagName(subNodeName);
  288.         for (int j=0;j<names.getLength();j++){
  289.           Element name=(Element)names.item(j);
  290.           String nodeValue=name.getFirstChild().getNodeValue().trim();
  291.           if(nodeValue.trim().toLowerCase().equals(subNodeValue.trim().toLowerCase())){
  292.              name.getFirstChild().setNodeValue(newSubNodeValue);
  293.              break;
  294.           }
  295.         }
  296.       }
  297.       tFactory = TransformerFactory.newInstance();
  298.       transformer = tFactory.newTransformer();
  299.       source = new DOMSource(doc);
  300.       result = new StreamResult(new java.io.File(filePath));
  301.       transformer.transform(source, result);
  302.     }
  303.     catch(Exception e){
  304.       LogManage.addLog("exception", DateFormat.formatDateYMDHMS(new java.util.Date())+" xmlFileManage6:"+e);
  305.       logger.error(e.getMessage());
  306.       reValue=2;    //error
  307.     }
  308.     finally{
  309.       doc = null;
  310.       builder = null;
  311.       factory = null;
  312.       result = null;
  313.       source = null;
  314.       transformer = null;
  315.       tFactory = null;
  316.     }
  317.     return reValue;
  318.   }
  319.   //get node value
  320.   public synchronized static String getNodeValue(String filePath,String nodeName,String subNodeName){
  321.     String reValue="";
  322.     try{
  323.        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
  324.        DocumentBuilder builder=factory.newDocumentBuilder();
  325.        Document doc=builder.parse(filePath);
  326.        
  327.        doc.normalize();
  328.        NodeList nodeNames =doc.getElementsByTagName(nodeName);
  329.        for (int i=0;i<nodeNames.getLength();i++){
  330.          Element nodeNameElm = (Element) nodeNames.item(i);
  331.          NodeList subNodeNames = nodeNameElm.getElementsByTagName(subNodeName);
  332.          for (int j = 0; j < subNodeNames.getLength(); j++) {
  333.            Element subNodeNameElm = (Element) subNodeNames.item(j);
  334.            String strTmp = subNodeNameElm.getFirstChild().getNodeValue();
  335.            if (reValue.equals(""))
  336.              reValue = strTmp;
  337.            else
  338.              reValue += "*%*" + strTmp;
  339.          }
  340.        }
  341.        doc=null;
  342.        builder=null;
  343.        factory=null;
  344.     }
  345.     catch(Exception e){
  346.        LogManage.addLog("exception", DateFormat.formatDateYMDHMS(new java.util.Date())+" xmlFileManage7:"+e);
  347.        logger.error("getNodeValue exception:"+e);
  348.        return "";  //error
  349.     }
  350.     logger.debug(reValue);
  351.     return reValue;
  352.   }
  353.   //check node whether already exists
  354.   public synchronized static int isExists(String filePath,String nodeName,String subNodeName,String subNodeValue) {
  355.     int reValue=-1;   //not exists
  356.     DocumentBuilderFactory factory =null;
  357.     DocumentBuilder builder =null;
  358.     Document doc =null;
  359.     try{
  360.       factory = DocumentBuilderFactory.newInstance();
  361.       builder = factory.newDocumentBuilder();
  362.       doc = builder.parse(filePath);
  363.       doc.normalize();
  364.       NodeList links =doc.getElementsByTagName(nodeName);
  365.       for (int i=0;i<links.getLength();i++){
  366.         Element link=(Element)links.item(i);
  367.         NodeList names =link.getElementsByTagName(subNodeName);
  368.         for (int j=0;j<names.getLength();j++){
  369.           Element name=(Element)names.item(j);
  370.           String nodeValue=name.getFirstChild().getNodeValue().trim();
  371.           if(nodeValue.trim().toLowerCase().equals(subNodeValue.trim().toLowerCase())){
  372.              reValue=0;   //exists
  373.              break;
  374.           }
  375.         }
  376.       }
  377.     }
  378.     catch(Exception e){
  379.       LogManage.addLog("exception", DateFormat.formatDateYMDHMS(new java.util.Date())+" xmlFileManage8:"+e);
  380.       logger.error(e.getMessage());
  381.       reValue=2;    //error
  382.     }
  383.     finally{
  384.       doc = null;
  385.       builder = null;
  386.       factory = null;
  387.     }
  388.     return reValue;
  389.   }
  390.   //delete first value is key sub node,formate is 'domainName|admin1|admin2|....'
  391.   public synchronized static int delFirstValueIsKeyNode(String filePath,String nodeName,String subNodeName,String subNodeValue) {
  392.     int reValue=0;   //succesful
  393.     DocumentBuilderFactory factory =null;
  394.     DocumentBuilder builder =null;
  395.     Document doc =null;
  396.     TransformerFactory tFactory =null;
  397.     Transformer transformer = null;
  398.     DOMSource source =null;
  399.     StreamResult result =null;
  400.     try{
  401.       factory = DocumentBuilderFactory.newInstance();
  402.       builder = factory.newDocumentBuilder();
  403.       doc = builder.parse(filePath);
  404.       doc.normalize();
  405.       NodeList links =doc.getElementsByTagName(nodeName);
  406.       for (int i=0;i<links.getLength();i++){
  407.         Element link=(Element)links.item(i);
  408.         NodeList names =link.getElementsByTagName(subNodeName);
  409.         for (int j=0;j<names.getLength();j++){
  410.           Element name=(Element)names.item(j);
  411.           String nodeValue=name.getFirstChild().getNodeValue().trim();
  412.           nodeValue=CommUtil.getFirstValue(nodeValue,"|");
  413.           if(nodeValue.trim().toLowerCase().equals(subNodeValue.trim().toLowerCase())){
  414.              link.removeChild(name);
  415.              break;
  416.           }
  417.         }
  418.       }
  419.       tFactory = TransformerFactory.newInstance();
  420.       transformer = tFactory.newTransformer();
  421.       source = new DOMSource(doc);
  422.       result = new StreamResult(new java.io.File(filePath));
  423.       transformer.transform(source, result);
  424.     }
  425.     catch(Exception e){
  426.       LogManage.addLog("exception", DateFormat.formatDateYMDHMS(new java.util.Date())+" xmlFileManage9:"+e);
  427.       logger.error(e.getMessage());
  428.       reValue=2;    //error
  429.     }
  430.     finally{
  431.       doc = null;
  432.       builder = null;
  433.       factory = null;
  434.       result = null;
  435.       source = null;
  436.       transformer = null;
  437.       tFactory = null;
  438.     }
  439.     return reValue;
  440.   }
  441. */
  442. }