📄 xmlfiletools.java
字号:
package net.meybo.util;
import java.io.*;
import org.apache.log4j.Logger;
import org.dom4j.Document;
import org.dom4j.io.SAXReader;
/***************************************
* <p>Title: 邮件服务器</p>
* <p>Description: XML文件处理程序</p>
* <p>Copyright: Copyright (c) 2006</p>
* <p>Company: 脉博软件</p>
* @author 阚吉彬
* @version 1.0
***************************************/
public class XmlFileTools {
private static final Logger logger = (Logger) Logger.getLogger(XmlFileTools.class.getName());
public XmlFileTools() {
}
public static synchronized Document load(String fileName) {
Document document = null;
try {
SAXReader reader = new SAXReader();
File file=new File(fileName);
document = file.exists()?reader.read(fileName):null;
} catch(Exception e) {
System.out.println("Load xml string error!"+ e);
}
return document;
}
public static synchronized boolean write(String fileName,Document doc)
{
boolean ret=false;
try{
Writer writer=new FileWriter(fileName);
doc.setXMLEncoding("gbk");
writer.write(doc.asXML());
//doc.write(writer);
writer.close();
ret=true;
}
catch(Exception e)
{
logger.error("写文件错误!"+e);
}
return ret;
}
/*
//create empty xml file
public synchronized static boolean createFile(String filePath,String rootNodeName){
File file=new File(filePath);
if(!file.exists()){ //
try{
file.createNewFile();
DataOutputStream dos = new DataOutputStream(new FileOutputStream(file));
dos.writeBytes("<?xml version='1.0' encoding='UTF-8'?><" + rootNodeName +"></" + rootNodeName + ">");
dos.close();
dos = null;
}
catch(Exception e){
LogManage.addLog("exception", DateFormat.formatDateYMDHMS(new java.util.Date())+" xmlFileManage1:"+e);
logger.error(e.getMessage());
return false;
}
}
return true;
}
//add one subnode
public synchronized static int addNode(String filePath,String nodeName,String subNodeName,String subNodeValue) {
int reValue=0; //succesful
DocumentBuilderFactory factory =null;
DocumentBuilder builder =null;
Document doc =null;
TransformerFactory tFactory =null;
Transformer transformer = null;
DOMSource source =null;
StreamResult result =null;
if(subNodeValue.trim().equals("")) subNodeValue=" ";
try{
factory = DocumentBuilderFactory.newInstance();
builder = factory.newDocumentBuilder();
doc = builder.parse(filePath);
doc.normalize();
NodeList links =doc.getElementsByTagName(nodeName);
for(int i=0;i<links.getLength();i++){
Element link=(Element)links.item(i);
Text textseg; //text value subnode
Element name =doc.createElement(subNodeName); //sub name node
textseg = doc.createTextNode(subNodeValue); //node value
name.appendChild(textseg);
link.appendChild(name);
}
tFactory = TransformerFactory.newInstance();
transformer = tFactory.newTransformer();
source = new DOMSource(doc);
result = new StreamResult(new java.io.File(filePath));
transformer.transform(source, result);
}
catch(Exception e){
LogManage.addLog("exception", DateFormat.formatDateYMDHMS(new java.util.Date())+" xmlFileManage2:"+e);
logger.error(e.getMessage());
reValue=2; //error
}
finally{
doc = null;
builder = null;
factory = null;
result = null;
source = null;
transformer = null;
tFactory = null;
}
return reValue;
}
//add many subnode
public synchronized static int addNode(String filePath,String nodeName,String[] subNodeName,String[] subNodeValue) {
int reValue=0; //succesful
DocumentBuilderFactory factory =null;
DocumentBuilder builder =null;
Document doc =null;
TransformerFactory tFactory =null;
Transformer transformer = null;
DOMSource source =null;
StreamResult result =null;
try{
factory = DocumentBuilderFactory.newInstance();
builder = factory.newDocumentBuilder();
doc = builder.parse(filePath);
doc.normalize();
NodeList links =doc.getElementsByTagName(nodeName);
for(int i=0;i<links.getLength();i++){
Element link=(Element)links.item(i);
int nodeNumber=link.getChildNodes().getLength();
if(nodeNumber==1){
Text textseg; //text value subnode
for (int m = 0; m < subNodeName.length; m++) {
Element name = doc.createElement(subNodeName[m]); //sub name node
if (subNodeValue[m].trim().equals(""))
subNodeValue[m] = " ";
textseg = doc.createTextNode(subNodeValue[m]); //node value
name.appendChild(textseg);
link.appendChild(name);
}
}
}
tFactory = TransformerFactory.newInstance();
transformer = tFactory.newTransformer();
source = new DOMSource(doc);
result = new StreamResult(new java.io.File(filePath));
transformer.transform(source, result);
}
catch(Exception e){
LogManage.addLog("exception", DateFormat.formatDateYMDHMS(new java.util.Date())+" xmlFileManage3:"+e);
logger.error("addNode Exception:"+e);
reValue=2; //error
}
finally{
doc = null;
builder = null;
factory = null;
result = null;
source = null;
transformer = null;
tFactory = null;
}
return reValue;
}
//delete one subnode
public synchronized static int delNode(String filePath,String nodeName,String subNodeName,String subNodeValue) {
int reValue=0; //succesful
DocumentBuilderFactory factory =null;
DocumentBuilder builder =null;
Document doc =null;
TransformerFactory tFactory =null;
Transformer transformer = null;
DOMSource source =null;
StreamResult result =null;
try{
factory = DocumentBuilderFactory.newInstance();
builder = factory.newDocumentBuilder();
doc = builder.parse(filePath);
doc.normalize();
NodeList links =doc.getElementsByTagName(nodeName);
for (int i=0;i<links.getLength();i++){
Element link=(Element)links.item(i);
NodeList names =link.getElementsByTagName(subNodeName);
for (int j=0;j<names.getLength();j++){
Element name=(Element)names.item(j);
String nodeValue=name.getFirstChild().getNodeValue().trim();
if(nodeValue.trim().toLowerCase().equals(subNodeValue.trim().toLowerCase())){
link.removeChild(name);
break;
}
}
}
tFactory = TransformerFactory.newInstance();
transformer = tFactory.newTransformer();
source = new DOMSource(doc);
result = new StreamResult(new java.io.File(filePath));
transformer.transform(source, result);
}
catch(Exception e){
LogManage.addLog("exception", DateFormat.formatDateYMDHMS(new java.util.Date())+" xmlFileManage4:"+e);
logger.error(e.getMessage());
reValue=2; //error
}
finally{
doc = null;
builder = null;
factory = null;
result = null;
source = null;
transformer = null;
tFactory = null;
}
return reValue;
}
//del same level all sub node
public synchronized static int delAllSubNode(String filePath,String nodeName,String subNodeName,String subNodeValue) {
int reValue=0; //succesful
DocumentBuilderFactory factory =null;
DocumentBuilder builder =null;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -