以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 DOM/SAX/XPath 』  (http://bbs.xml.org.cn/list.asp?boardid=11)
----  XML-properties in jdk1.4 using dom4j  (http://bbs.xml.org.cn/dispbbs.asp?boardid=11&rootid=&id=24548)


--  作者:杨一
--  发布时间:11/22/2005 3:07:00 PM

--  XML-properties in jdk1.4 using dom4j
作为DOM4J应用的例子
用XML实现的properties,欢迎大家指正

/**
* @author yangyi
* @version 1.0
*/

import java.io.FileWriter;
import java.io.IOException;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

public class XMLProperty extends Properties {

 Document document;

 Node node;

 /**
  * override 超类的方法,根据url载入Document
  *
  * @param url
  */

 public void load(URL url) {
  SAXReader reader = new SAXReader();
  try {
   document = reader.read(url);
  } catch (DocumentException e) {
   e.printStackTrace();
  }
 }

 /**
  * overload the super method 设置一些信息到xml文件中,如果这些信息以前不存在,则在xml中新增记

录,
  * 如果已经存在,则根据传入的参数对其进行更新
  *
  * @param name
  *            设置的文件信息
  * @param value
  *            设置的value值
  * @param add
  *            设置的附加信息
  */

 public void setProperty(String name, String value, String add) {
  // 以特定的格式展现时间
  Date date = new Date();
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh-mm-ss");
  String fd = sdf.format(date);

  Element table = null;
  // 如果不存在这样一个节点
  if (node == null) {
   Element xml = document.getRootElement();
   table = xml.addElement("table");
   table.addText(value);
  }
  // 如果已经存在这个节点,但是类型不相同
  else if (node instanceof Element) {
   table = (Element) node;
   table.setText(value);
  }
  // 如果类型转换出现错误
  else
   System.out.println("程序类型转换出错!");

  table.addAttribute("name", name).addAttribute("time", fd)
    .addAttribute("add", add);

  try {
   OutputFormat format = OutputFormat.createPrettyPrint();
   XMLWriter writer = new XMLWriter(new FileWriter("properties.xml"),
     format);
   writer.write(document);
   writer.close();
  } catch (IOException e) {
   e.printStackTrace();
  }
 }

 /**
  * override 超类的方法。如果给据参数找不到相关的信息,则返回null,否则返回value
  *
  * @param str表名(xml文件名)
  * @return 要返回的value,如果没有找到就返回null
  */
 public String getProperty(String fileName) {
  node = document.selectSingleNode("//table[@name='" + str+ "']");
  if (node == null) {
   return null;
  } else {
   return node.getText();
  }
 }
}


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
46.875ms