2008-04-26
树目录结构数据层的设计问题
关键字: dom4j操作xml树目录结构数据层的设计问题这两天遇到一个树目录的问题,前台的问题基本上已经确定了,使用dtree,比较不错的一个开源树,可以根据需要添加自己的function。
先说说具体的流程:
用户点击一个书目录节点,可以展开该目录下的所有文件夹,同时把该文件夹以及所有子文件夹下面的文件在右边list出来。这样的话用数据库就必须有很好的设计思路(网上看到一个,下面会提到),不然一个递归循环就得等半天,对数据库压力也比较大。但是我是想用xml文件来存取目录树的结构和该目录下文件的id,右边要显示的一些文件的信息还是用数据库来存取。因为xml文件的结构本身就是树型的,存取起来也比较方便.下面说说具体的步骤,xml放入操作可以使用jdom。我用的是dom4j,可能是先入为主吧。
我的xml测试文件log.xml:
<?xml version="1.0" encoding="gbk"?>
<log>
<group>
<folder id="1"> <!--下面会获得该节点的对象-->
<folder>
<fileId>1</fileId>
</folder>
<fileId>2</fileId> <!---文件的id号-->
<fileId>3</fileId>
</folder>
<folder id="2">
<folder id="3">
<!---空文件夹-->
</folder>
</folder>
<fileId>4</fileId>
<fileId>5</fileId>
</group>
</log>
下面将从xml文件中读取出指定文件夹下的所有文件的id以便从数据库中读取文件信息:
SAXReader saxReader = new SAXReader();
String fileName="d:/log.xml";
try {
//读入一个xml文件,转化为Document 对象
Document document = saxReader.read(new File(fileName));
/**
* 获得log/group/folder节点内id属性值为1的节点
* 你没感觉到这种做法很想数据库的查询操作吗。是不是很神奇呢!
**/
Element e=(Element)document.selectSingleNode("log/group/folder[@id='1']");
//获得该节点下名称为 fileId 节点的迭代器
Iterator iterator = e.elementIterator("fileId");
//下面就可以获得该文件夹下所有文件的id,然后就是从数据库查询了,我只是做了一个打印的测试。
while(iterator.hasNext()){
System.out.println(((Element)iterator.next()).getText());
} catch (DocumentException e) {
e.printStackTrace();
}
至于插入数据的话指定到要插入的位置使用
element.setText("terryang");
//下面是实现更新文件
XMLWriter writer = new XMLWriter(new FileWriter(new File("d:/log.xml")));
writer.write(document);
writer.close();
添加,修改,删除,插入的操作差不多,大家可以baidu,google一下。
可以看出,这样就可以很简单的实现节点的添加,修改,删除,插入,查询等操作。
好了,xml存取树节点的方法就是这样,希望大家多多指正。
下面我要说的是一个很好的数据库设计思路:
给出网址 http://www.java3z.com/cwbwebhome/article/article2/2781.html?id=1306
我就不在这再复制粘贴了!
- 20:19
- 浏览 (295)
- 评论 (0)
- 分类: java
- 发布在 javascript研究小组 圈子
- 相关推荐
发表评论
- 浏览: 839 次
- 性别:

- 来自: 北京

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
原创----我的一个小框架
V 的话我用的是jstl,M的话就比较自由了,就是自定义的一些类。有数据库的话, ...
-- by terryang -
原创----我的一个小框架
前面只讨论到MVC中的C,剩下的MV怎么没说
-- by stworthy -
原创----我的一个小框架
azllza 写道建议: xxx.do,在servlet中解析出xxx来。xxx ...
-- by nickcen -
原创----我的一个小框架
呵呵,azllza 说的没错。我就是用它来做同一个业务层的操作。 更好的建议可以 ...
-- by terryang -
原创----我的一个小框架
这样一个类 就可以实现对同一个业务对象 实现他的增,删,改,查等操作了。 我 ...
-- by azllza






评论排行榜