[源代码]做了一个比较白菜的XML解释器

作者在 2007-04-13 04:43:00 发布以下内容

最近遇到一些需要读取树形结构配置文件的问题,
当然想起来用XML,但是没有必要用那么复杂的XML语法,
只是写成类似的样子就可以了,于是想借此机会练习一下,
写了个解析的小代码,大虾们看了不要笑话俺。

===============================================
        点击这里下载源代码:UploadFiles/2007-4/412116888.rar
===============================================
jdk 1.42
源代码很简单,一共包含三个Class
    XML  :可以从一个String或一个File中加载XML文件
    MarkupNode :标记节点,含有SetProperty()和getProperty()方法
    MarkupQueue :一个队列类,联系一下数据结构,顺便在XML类中用一下

    XML是mainclass,可以看到运行结果。
==============================================
下面的运行结果里面可以看到MarkupNode的
setProperty()和getProperty()的效果
================================================
测试文件xml.xml内容如下:
<table>
<tr>
 <td><a href=www.163.com></a></td>
 <td><a href=xh></a></td>
 <td><a href=""></a></td>
</tr>
<tr>
 <td><a href=""></a></td>
 <td></td>
 <td></td>
</tr>
<tr>
 <td></td>
 <td></td>
 <td></td>
</tr>
</table>
================================================
解析结果:
XMLDocumentRoot_xuhua
table
tr
td
a
td
a
td
a
tr
td
a
td
td
tr
td
td
td
堆栈遍历结果如下:
<XMLDocumentRoot_xuhua test1=test1>
<table test1=test1>
<tr test1=test1>
<td test1=test1>
<a href=www.163.com test1=test1>
<td test1=test1>
<a href=xh test1=test1>
<td test1=test1>
<a href="" test1=test1>
<tr test1=test1>
<td test1=test1>
<a href="" test1=test1>
<td test1=test1>
<td test1=test1>
<tr test1=test1>
<td test1=test1>
<td test1=test1>
<td test1=test1>

===================================================

代码摘录:

XML.java
==========================================
  XML xml = new XML();    //创建一个对象
  //strxml是一段测试用的xml标记代码
  String strxml = "<a a=1 b=2 c=3><c><d></d><e></e></c><系部 名称=\"计算机系\"><学生 姓名=\"王旭华\">hehe</学生><学生 姓名=\"张营\">haha</学生></系部></a>";
  MarkupNode droot1 = xml.LoadXML(strxml);    //droot1中就有了这个树形结构
  
  File fxml = new File("xml.xml");
  MarkupNode droot2 = xml.LoadXML(fxml);    //droot2中有xml.xml文件的树形结构
=============================================

MarkupNode.java
==============================================
import java.util.*;

public class MarkupNode {
 public String m_name; //标记名称
 public MarkupNode m_parent_node; //父节点
 public Vector m_child_vector; //子节点集合
 
 private Hashtable m_property_hashtable; //属性集合
 
 /**
  * Method MarkupNode
  *
  * 这是一个 标记节点
  */
 public MarkupNode() {
  // TODO: 在这添加你的代码
  m_name = "";
  m_parent_node = null;
  m_child_vector = new Vector();
  m_property_hashtable = new Hashtable();
 }

 /**
  * Method removeProperty
  *
  *
  * @return
  *
  */
 public String removeProperty(String strkey) {
  // TODO:

JAVA | 阅读 1556 次
文章评论,共0条
游客请输入验证码