用Applet读写XML配置文件

80酷酷网    80kuku.com

  xml此小程序用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;

}

}





分享到
  • 微信分享
  • 新浪微博
  • QQ好友
  • QQ空间
点击: