本来想做个“小玩意”,这个“小玩意”的就是一个通讯录(之所以这么想是因为手机丢了,好多熟人都联系不上了)。本来也不难,界面用SWT&Jface做就行了,数据的存储与读取可以通过JDBC或Hibernate调用数据库。虽然说数据库的调用我并不是很熟,不过好在这方面的书籍大把大把的有,找找书照着做应该没有什么问题。但是我并不想用这么“俗”的方法,以前老是听说XML怎么这么不错,接触的也不少,看也能看懂,但是没有用XML做过数据存储,于是想能不能不用数据库而改用XML来存储通讯录里的资料。仔细想想应该能行,无非就是一些元素和标识,XML应该挺适合做通讯录的数据来源。但是想归想,做归做,首先要解决几个问题:
1、 在java中怎么读XML文件?用什么API来操作?
因为不能上网,所以我要解决问题只能求助我电脑里的藏书了。找啊找,没费什么劲就在jdk文档里与一个ppt文件里发现了解决问题的线索:java里的org.w3c.dom包与org.xml.sax包提供了解决的这个问题应该用到的类。其中dom的意思是Document Object Model,sax的意思是Simple API for XML。在两个的特点我照ppt抄一下,
Dom:
• 通过树型结构存取XML文档
• 由元素节点和文本节点组成
• 可以在树的某个节点上向前或向后移动
• 与SAX相比需要更大的内存
• org.w3c.dom.*
Sax:
• 串行存取文档
• 轻量级、快速
• 编程较难
• 仅用于串行存取
• org.xml.sax.*
各有各的特点,不管怎么说,对于我这个小玩意,两个应该都能用。于是我就照着书上的例子试着建了几个类,写了一些代码。这些类分别是DocHandler、XMLtest,还有应该xml文件:test.xml。但是还是失败了,出现了空指针异常,描述是No value for sax.parser property,出现问题的代码是Parser p = ParserFactory.makeParser(),问题是我是照着ppt上的代码写的,不知道出现了什么问题。后来我发现这是2003年的东西了,ppt上面用的类很多都是过时了的。找别的书也没有找到解决方法,无奈。
2、 怎么写XML文件?
我对“小玩意”的设计是不仅能从界面上浏览通讯录上的资料,而且还能进行资料的录入(这应该是基本要求吧)。但是我发现找不到写XML文件的方法(在我的电脑里找不到)。有一个类java.beans.XMLEncoder应该可以生成指定对象的XML文件,但是好像只能对swing的对象进行的操作。
不能上网,只能放在以后在说了,今天先放一放。