📄 90dc30d8640f001d1622ead12426ea11
字号:
package com.lib.biz;
/***********************
*
* @author ZhanLiangfei
* Jdom解析XML文件实现增删减查
*
*/
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;
import com.lib.cls.Server;
import com.mysql.jdbc.Field;
public class XMLOperate {
private Vector vt;
private static XMLOperate instance;
public static XMLOperate getInstance(){
if(instance==null){
instance = new XMLOperate();
}
return instance;
}
/**
* 读取XML文件所有信息
*/
public Vector LoadXML(String path) throws Exception {
Vector xmlVector = null;
FileInputStream fi = null;
try {
fi = new FileInputStream(path);
xmlVector = new Vector();
SAXBuilder sb = new SAXBuilder();
Document doc = sb.build(fi);
Element root = doc.getRootElement(); // 得到根元素
List servers = root.getChildren(); // 得到根元素所有子元素的集合
Element server = null;
Server xml = null;
for (int i = 0; i < servers.size(); i++) {
xml = new Server();
server = (Element) servers.get(i); // 得到第1个服务器信息
xml.setName(server.getChild("name").getText());
xml.setAdd(server.getChild("add").getText());
xml.setPort(Integer.parseInt(server.getChild("port").getText()));
xml.setDatabase(server.getChild("database").getText());
xml.setU(server.getChild("u").getText());
xml.setP(server.getChild("p").getText());
xml.setDt(server.getChild("dt").getText());
xmlVector.add(xml);
}
} catch (Exception e) {
System.err.println(e + "error");
} finally {
try {
fi.close();
} catch (Exception e) {
e.printStackTrace();
}
}
return xmlVector;
}
/**
* 删除XML文件指定信息
*/
public static void DelXML(String path,String servername) throws Exception {
FileInputStream fi = null;
FileOutputStream fo = null;
try {
XMLOperate bean=new XMLOperate();
int xmlid=bean.FindXml(path,servername);
fi = new FileInputStream(path);
SAXBuilder sb = new SAXBuilder();
Document doc = sb.build(fi);
Element root = doc.getRootElement(); // 得到根元素
List servers = root.getChildren(); // 得到根元素所有子元素的集合
servers.remove(xmlid);// 删除指定位置的子元素
XMLOutputter outp = new XMLOutputter();
fo = new FileOutputStream(path);
outp.output(doc, fo);
} catch (Exception e) {
System.err.println("查无此服务器,故不能完成删除");
} finally {
try {
fi.close();
fo.close();
} catch (Exception e) {
System.err.println("查无此服务器,故不能删除");
}
}
}
/**
* 添加XML文件指定信息
*/
public static void AddXML(String path,Server server) throws Exception {
FileInputStream fi = null;
FileOutputStream fo = null;
try {
fi = new FileInputStream(path);
SAXBuilder sb = new SAXBuilder();
Document doc = sb.build(fi);
Element root = doc.getRootElement(); // 得到根元素
List servers = root.getChildren(); // 得到根元素所有子元素的集合
String name = server.getName();
String add = server.getAdd();
String port = String.valueOf(server.getPort());
String database = server.getDatabase();
String u = server.getU();
String p = server.getP();
String dt = server.getDt();
Element newserver = new Element("server");
Element newname = new Element("name");
newname.setText(name);
newserver.addContent(newname);
Element newadd = new Element("add");
newadd.setText(add);
newserver.addContent(newadd);
Element newport = new Element("port");
newport.setText(port);
newserver.addContent(newport);
Element newdatabase = new Element("database");
newdatabase.setText(database);
newserver.addContent(newdatabase);
Element newdate = new Element("u");
newdate.setText(u);
newserver.addContent(newdate);
Element newp = new Element("p");
newdate.setText(p);
newserver.addContent(newp);
Element newdt = new Element("dt");
newdate.setText(dt);
newserver.addContent(newdt);
servers.add(newserver);// 增加子元素
XMLOutputter outp = new XMLOutputter();
fo = new FileOutputStream(path);
outp.output(doc, fo);
} catch (Exception e) {
System.err.println(e + "error");
} finally {
try {
fi.close();
fo.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
* 修改XML文件指定信息,对书名为pservername,修改为pBean的书对象
*/
public static void EditXML(String path,String pservername,Server pserver) throws Exception {
FileInputStream fi = null;
FileOutputStream fo = null;
try {
XMLOperate bean=new XMLOperate();
int xmlid=bean.FindXml(path,pservername);
fi = new FileInputStream(path);
SAXBuilder sb = new SAXBuilder();
Document doc = sb.build(fi);
Element root = doc.getRootElement(); // 得到根元素
List servers = root.getChildren(); // 得到根元素所有子元素的集合
Element server = (Element) servers.get(xmlid);
String servername = pserver.getName();
String add = pserver.getAdd();
String database = pserver.getDatabase();
String port = String.valueOf(pserver.getPort());
String u = pserver.getU();
String p = pserver.getP();
String dt = pserver.getDt();
Element newname = server.getChild("name");
newname.setText(servername);// 修改书名为新的书名
Element newadd = server.getChild("add");
newadd.setText(add);
Element newport = server.getChild("port");
newport.setText(port);
Element newdatabase = server.getChild("database");
newdatabase.setText(database);
Element newu = server.getChild("u");
newu.setText(u);
Element newp = server.getChild("p");
newp.setText(p);
Element newdt = server.getChild("dt");
newdt.setText(dt);
// servers.set(xmlid,server);//修改子元素
XMLOutputter outp = new XMLOutputter();
fo = new FileOutputStream(path);
outp.output(doc, fo);
} catch (Exception e) {
System.err.println("查无此此服务器,故不能修改");
} finally {
try {
fi.close();
fo.close();
} catch (Exception e) {
System.err.println("查无此服务器,故不能修改");
}
}
}
/**
* 查找XML文件指定信息
*/
private int FindXml(String path,String servername){
XMLOperate xml=new XMLOperate();
Vector vt=null;
try {
vt=xml.LoadXML(path);
} catch (Exception e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
int i=0;
for(Iterator it=vt.iterator();it.hasNext();i++){
Server bean=(Server)it.next();
if(bean.getName().equals(servername)){
return i;
}
}
return -1;
}
public Vector getVector() {
String path = "src/com/lib/data/libserver.xml";
try {
vt = getInstance().LoadXML(path);
} catch (Exception e) {
System.out.println(e);
}
return vt;
}
public static void main(String[] args) {
String path="../data/libserver.xml";
Server server = new Server();
Vector vt=null;
try {
vt=XMLOperate.getInstance().LoadXML(path);
} catch (Exception e) {
e.printStackTrace();
}
for(int i=0;i<vt.size();i++){
server=(Server)vt.elementAt(i);
System.out.println("服务器名:"+server.getName());
System.out.println("服务器地址:"+server.getAdd());
System.out.println("....................");
}
// Server xmlAdd=new Server();
// xmlAdd.setName("香港中文大学");
// xmlAdd.setAdd("192.168.8.88");
// xmlAdd.setPort(210);
// xmlAdd.setU("sa");
// xmlAdd.setP("123");
// try {
// XMLOperate.getInstance().AddXML(path,xmlAdd);
// } catch (Exception e) {
// // TODO 自动生成 catch 块
// e.printStackTrace();
// }}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -