用Applet读写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;

  }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值