📄 configurexml.java
字号:
package com.ICT.AFC.util;
import org.jdom.*;
import java.util.Vector;
import org.jdom.input.SAXBuilder;
import java.io.IOException;
import java.util.List;
import java.util.Iterator;
import org.jdom.output.XMLOutputter;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.FileNotFoundException;
public class configureXML
{
//需要解析的文件
private static String file = "./configure.xml";
static Vector contractSource = new Vector();
static Vector department = new Vector();
static Element root;
static SAXBuilder builder;
static Document doc;
public static void main(String args[]) throws FileNotFoundException,
IOException {
initializeConfigureXml();
}
public static void initializeConfigureXml() throws FileNotFoundException,
IOException
{
builder = new SAXBuilder();
//组装contractSource对象
contractSource.insertElementAt("国家",0);
contractSource.insertElementAt("部委",1);
contractSource.insertElementAt("铁科院",2);
contractSource.insertElementAt("电子所",3);
contractSource.insertElementAt("横向",4);
contractSource.insertElementAt("其他",5);
//组装department对象
department.insertElementAt("AFC事业部",0);
department.insertElementAt("ASP事业部",1);
department.insertElementAt("智能中心",2);
department.insertElementAt("机电市场部",3);
department.insertElementAt("信息化监理部",4);
department.insertElementAt("研发部",5);
department.insertElementAt("综合部",6);
department.insertElementAt("财务部",7);
department.insertElementAt("质管部",8);
department.insertElementAt("人力资源部",9);
department.insertElementAt("杂志社",10);
department.insertElementAt("所领导",11);
//传入参数生成configureXML配置文件
writeConfigureXML(contractSource,department);
}
//添加一个ContractSource
public static void addContractSource(String str) throws FileNotFoundException, IOException
{
//声明一个builder对象
builder = new SAXBuilder();
//声明一个Document对象
try
{
doc = builder.build(file);//解析file文件
}
catch(JDOMException e)
{
System.err.println(e.getMessage());
}
//获得root元素
root = doc.getRootElement();
//取得contractSource子节点
Element contractSource = root.getChild("contractSource");
//取得department子节点
Element department = root.getChild("department");
//获取一个contractSourceVector对象,并以Vector对象返回
Vector contractSourceVector = getContractSource(contractSource,0);
//获取一个departmentVector对象,并以Vector对象返回
Vector departmentVector = getDepartment(department,0);
//在已有的基础上索引值加1。
int i = contractSourceVector.size();
String contractStr = str;//contractSource属性值
contractSourceVector.add(i,contractStr);//在vector对象中加入新的值
writeConfigureXML(contractSourceVector,departmentVector);//输出修改后的ContractSourceXML文件
}
//删除一个ContractSource
public static void delContractSource(String str) throws FileNotFoundException,
IOException
{
//声明一个builder对象
builder = new SAXBuilder();
//声明一个Document对象
try
{
doc = builder.build(file);//解析file文件
}
catch(JDOMException e)
{
System.err.println(e.getMessage());
}
//获得root元素
root = doc.getRootElement();
//取得contractSource子节点
Element contractSource = root.getChild("contractSource");
//取得department子节点
Element department = root.getChild("department");
//获取一个contractSourceVector对象,并以Vector对象返回
Vector contractSourceVector = getContractSource(contractSource,0);
//获取一个departmentVector对象,并以Vector对象返回
Vector departmentVector = getDepartment(department,0);
contractSourceVector.removeElement(str);
writeConfigureXML(contractSourceVector,departmentVector);
}
//添加一个deparment
public static void addDeparment(String str) throws FileNotFoundException, IOException
{
//声明一个builder对象
builder = new SAXBuilder();
//声明一个Document对象
try
{
doc = builder.build(file);//解析file文件
}
catch(JDOMException e)
{
System.err.println(e.getMessage());
}
//获得root元素
root = doc.getRootElement();
//取得contractSource子节点
Element contractSource = root.getChild("contractSource");
//取得department子节点
Element department = root.getChild("department");
//获取一个contractSourceVector对象,并以Vector对象返回
Vector contractSourceVector = getContractSource(contractSource,0);
//获取一个departmentVector对象,并以Vector对象返回
Vector departmentVector = getDepartment(department,0);
//在已有的基础上索引值加1。
int i = departmentVector.size();
String departmentStr = str;//contractSource属性值
departmentVector.add(i,departmentStr);//在vector对象中加入新的值
writeConfigureXML(contractSourceVector,departmentVector);//输出修改后的ContractSourceXML文件
}
//删除一个Deparment
public static void delDeparment(String str) throws FileNotFoundException,
IOException
{
//声明一个builder对象
builder = new SAXBuilder();
//声明一个Document对象
try
{
doc = builder.build(file);//解析file文件
}
catch(JDOMException e)
{
System.err.println(e.getMessage());
}
//获得root元素
root = doc.getRootElement();
//取得contractSource子节点
Element contractSource = root.getChild("contractSource");
//取得department子节点
Element department = root.getChild("department");
//获取一个contractSourceVector对象,并以Vector对象返回
Vector contractSourceVector = getContractSource(contractSource,0);
//获取一个departmentVector对象,并以Vector对象返回
Vector departmentVector = getDepartment(department,0);
departmentVector.removeElement(str);
writeConfigureXML(contractSourceVector,departmentVector);
}
//生成ContractSourceXML文件
public static void writeConfigureXML(Vector contractSource,Vector department) throws
FileNotFoundException, IOException
{
//声明并生成一个root元素
root = new Element("configure");
root.addContent("\n");//生成一个换行符
//生成contractSource子节点
Element contract = new Element("contractSource");
if(contractSource != null || contractSource.size()>0)
{
for (int i = 0; i < contractSource.size(); i++)
{
//生成一个contractSource元素,属性值index,text值
Element param = new Element("param");
param.setText(contractSource.elementAt(i).toString());
param.addAttribute("index",String.valueOf(i));
contract.addContent(param);
contract.addContent("\n");
//root.addContent("\n");
}
}
root.addContent(contract);
//生成department子节点
Element depart = new Element("department");
if(department != null || department.size()>0)
{
for (int i = 0; i < department.size(); i++)
{
//生成一个department元素,属性值index,text值
Element param = new Element("param");
param.setText(department.elementAt(i).toString());
param.addAttribute("index",String.valueOf(i));
depart.addContent(param);
depart.addContent("\n");
//root.addContent("\n");
}
}
root.addContent(depart);
//生成Docuemnt对象
doc = new Document(root);
//生成FileOutputStream对象,outWriter对象
FileOutputStream outStream = new FileOutputStream(file);
OutputStreamWriter outWriter = new OutputStreamWriter(outStream);
//生成XMLOutput对象
XMLOutputter outputter = new XMLOutputter();
try
{
outputter.setEncoding("gb2312");//设置输出XML文件的字符编码
outputter.output(doc,outWriter);//输出文件
}
catch(IOException e)
{
System.err.println(e);
}
outWriter.close();//关闭outWriter
outStream.close();//关闭outStream
}
//解析并获取ContractSource文件
public static Vector getContractSource(Element current,int depth)
{
Vector contractSourceVector = new Vector();
//获取current的子节点
List children = current.getChildren();
//遍历children子节点
Iterator iterator = children.iterator();
while(iterator.hasNext())
{
Element child = (Element) iterator.next();
getContractSource(child,depth);
//包装成Vector对象
String contractSourceIndex = child.getAttributeValue("index");
int i = Integer.parseInt(contractSourceIndex);
String contractSource = child.getText();
contractSourceVector.add(i,contractSource);
}
return contractSourceVector;
}
public static Vector getDepartment(Element current,int depth)
{
Vector departmentVector = new Vector();
//获取current的子节点
List children = current.getChildren();
//遍历children子节点
Iterator iterator = children.iterator();
while(iterator.hasNext())
{
Element child = (Element) iterator.next();
getContractSource(child,depth);
//包装成Vector对象
String contractSourceIndex = child.getAttributeValue("index");
int i = Integer.parseInt(contractSourceIndex);
String contractSource = child.getText();
departmentVector.add(i,contractSource);
}
return departmentVector;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -