此小程序用dom来读取xml文件,用dom4j来写xml文件。
dom4j下载地址:http://sourceforge.net/projects/dom4j
1、applet主程序mainframe.java
package frame;
/**
* @author wls
*/
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class mainframe
extends applet {
domxml domxml = new domxml();
button btnexit = new button("exit");
button btnrun = new button("save");
label lblmain = new label("dynamicroute.xml配置文件");
label lblsiteinfo = new label("srcserverid:");
label lblpath = new label("destserverid:");
label lblfilename = new label("switchserver:");
label lblsession = new label("metric:");
label lblsuccess = new label(" ");
textfield txtsiteinfo = new textfield(domxml.getsrcserverid(), 10);
textfield txtpath = new textfield(domxml.getdestserverid(), 10);
textfield txtfilename = new textfield(domxml.getswitchserver(), 10);
textfield txtsession = new textfield(domxml.getmetric(), 10);
panel p6 = new panel();
panel p1 = new panel();
panel p2 = new panel();
panel p3 = new panel();
panel p4 = new panel();
panel p5 = new panel();
panel p7 = new panel();
panel p8 = new panel();
public void init() {
resize(400, 300);
p6.add(lblmain);
p1.add(lblsiteinfo);
p1.add(txtsiteinfo);
p2.add(lblpath);
p2.add(txtpath);
p3.add(lblsession);
p3.add(txtsession);
p4.add(btnrun);
p4.add(btnexit);
p5.add(lblfilename);
p5.add(txtfilename);
p8.add(lblsuccess);
setlayout(new gridlayout(4, 2, 1, 1));
add(p6);
add(p7);
add(p1);
add(p2);
add(p5);
add(p3);
add(p4);
add(p8);
}
public boolean action(event evt, object obj) {
if (evt.target instanceof button) {
string btnname = (string) obj;
if (btnname.equals("save")) {
try {
domxml.setsrcserverid(txtsiteinfo.gettext());
domxml.setdestserverid(txtpath.gettext());
domxml.setswitchserver(txtfilename.gettext());
domxml.setmetric(txtsession.gettext());
buildxml buildxml = new buildxml();
if (buildxml.createxmlfile("dynamicroute.xml", domxml) == 1 &&
buildxml.formatxmlfile("dynamicroute.xml")==1) {
lblsuccess.settext("save success!");
system.out.println("save success!");
}
}
catch (exception e) {
e.printstacktrace();
}
}
else if (btnname.equals("exit")) {
system.exit(0);
}
}
return super.action(evt, obj);
}
public static void main(string args[]) {
new framedownload(new mainframe());
}
}
class framedownload
extends frame {
public framedownload(applet applet) {
setsize(400, 300);
add("center", applet);
applet.init();
setvisible(true);
this.addwindowlistener(new closewindows());
}
}
class closewindows
extends windowadapter {
public void windowclosing(windowevent e) {
frame frm = (frame) (e.getsource());
frm.dispose();
system.exit(0);
}
}
2、读取xml类domxml.java
package frame;
import javax.xml.parsers.*;
import org.w3c.dom.*;
/*
* created on 2004-8-19
* @author wls
*java读取xml文档
*利用dom来读取一个xml文档的内容
*
*/
public class domxml {
private string srcserverid;
private string destserverid;
private string switchserver;
private string metric;
public domxml() {
try {
initxml("dynamicroute.xml");
}
catch (exception ex) {
metric="0";
}
}
public string getsrcserverid() {
return srcserverid;
}
public void setsrcserverid(string srcserverid) {
this.srcserverid = srcserverid;
}
public string getdestserverid() {
return destserverid;
}
public void setdestserverid(string destserverid) {
this.destserverid = destserverid;
}
public string getswitchserver() {
return switchserver;
}
public void setswitchserver(string switchserver) {
this.switchserver = switchserver;
}
public string getmetric() {
return metric;
}
public void setmetric(string metric) {
this.metric = metric;
}
public void initxml(string filename) throws exception {
documentbuilderfactory factory = documentbuilderfactory.newinstance();
documentbuilder bulider = factory.newdocumentbuilder();
document doc = bulider.parse(filename);
nodelist nl = doc.getelementsbytagname("dynamicroute");
for (int i = 0; i < nl.getlength(); i++) {
element node = (element) nl.item(i);
srcserverid = node.getelementsbytagname("srcserverid").item(0).
getfirstchild().getnodevalue().trim();
destserverid = node.getelementsbytagname("destserverid").item(0).
getfirstchild().getnodevalue().trim();
switchserver = node.getelementsbytagname("serverid").item(0).
getfirstchild().getnodevalue().trim();
metric = node.getelementsbytagname("metric").item(0).getfirstchild().
getnodevalue().trim();
}
}
}
3、写xml文件类buildxml.java
package frame;
import java.io.*;
import org.dom4j.*;
import org.dom4j.io.*;
/**
* @author wls
*/
public class buildxml {
public buildxml() {
}
/**
* 建立一个xml文档,文档名由输入参数决定
* @param filename 需建立的文件名
* @return 返回操作结果, 0表失败, 1表成功
*/
public int createxmlfile(string filename, domxml domxml) {
/** 返回操作结果, 0表失败, 1表成功 */
int returnvalue = 0;
/** 建立document对象 */
document document = documenthelper.createdocument();
/** 建立xml文档的根route */
element routeelement = document.addelement("route");
/** 加入第一个dynamicroute节点 */
element dynamicrouteelement = routeelement.addelement("dynamicroute");
/** 加入show参数内容 */
//bookelement.addattribute("show","yes");
/** 加入节点 */
element srcserveridelement = dynamicrouteelement.addelement("srcserverid");
element destserveridelement = dynamicrouteelement.addelement("destserverid");
element switchserverelement = dynamicrouteelement.addelement("switchserver");
element serveridelement = switchserverelement.addelement("serverid");
element metricelement = dynamicrouteelement.addelement("metric");
/** 为title设置内容 */
srcserveridelement.settext(domxml.getsrcserverid());
destserveridelement.settext(domxml.getdestserverid());
serveridelement.settext(domxml.getswitchserver());
metricelement.settext(domxml.getmetric());
try {
/** 将document中的内容写入文件中 */
xmlwriter writer = new xmlwriter(new filewriter(new file(filename)));
writer.write(document);
writer.close();
/** 执行成功,需返回1 */
returnvalue = 1;
}
catch (exception ex) {
ex.printstacktrace();
}
return returnvalue;
}
/**
* 格式化xml文档,并解决中文问题
* @param filename
* @return
*/
public int formatxmlfile(string filename) {
int returnvalue = 0;
try {
saxreader saxreader = new saxreader();
document document = saxreader.read(new file(filename));
xmlwriter output = null;
/** 格式化输出,类型ie浏览一样 */
outputformat format = outputformat.createprettyprint();
/** 指定xml字符集编码 */
format.setencoding("utf-8");
output = new xmlwriter(new filewriter(new file(filename)), format);
output.write(document);
output.close();
/** 执行成功,需返回1 */
returnvalue = 1;
}
catch (exception ex) {
ex.printstacktrace();
}
return returnvalue;
}
}
