假设我现在要生成一个xml。让它去存储书籍信息。首先写根节点bookstore,然后添加第一本书,然后添加第二本书,这时候发现第一本书中有某一个内容忘记添加了,想回去进行修改或增加。这时候我们发现SAX解析是无法做到这一点的,因为SAX解析是基于事件的。基于事件的模型呢,把某一个标签走完了之后,它是不能走回头路的,它没有状态性可言。所以在使用DOM还是SAX进行选择时,要考虑到你是不是要对生成的模型进行频繁的修改。如果不是呢,建议选用SAX,因为SAX的性能也是非常高的。说到性能呢。衡量性能的重要指标之一呢,就是生成的速率。
2016-04-07
Format format=Format.getCompactFormat();这个方法是生成紧凑的xml格式,已经换过行了,但是没有缩进。
format.setIndent("");这句代码是实现xml中行的缩进的,里面的参数是空格,要想在xml文件的行中缩进1个空格,则在setIndent("")的参数里面传一个空格,就是在键盘上按一下空格键。想要缩进n个空格,就在参数里按n个空格。
这种格式可能用于某些场合。为了美观,我还是喜欢用这句代码:Format format=Format.getPrettyFormat();很方便,一句解决问题。
format.setIndent("");这句代码是实现xml中行的缩进的,里面的参数是空格,要想在xml文件的行中缩进1个空格,则在setIndent("")的参数里面传一个空格,就是在键盘上按一下空格键。想要缩进n个空格,就在参数里按n个空格。
这种格式可能用于某些场合。为了美观,我还是喜欢用这句代码:Format format=Format.getPrettyFormat();很方便,一句解决问题。
2016-04-07
只是讲了我们要这样写代码,但是没说为什么这样写。要用这个方法,可是不说为什么不用那个方法。还有就是要创建一个对象,可以new,也可以调用这个类的静态方法返回一个对象。有时候不用new,而直接用静态方法的返回值,不知道是为什么,我想大概用后者得到对象比用new速度快,代码少,效率高吧。
2016-04-07
我把原来的book.xml中的<name>标签之间的“冰与火之歌”刻意换成5个空格,然后运行了程序,生成新XML文件newbooks.xml里第一个book下果然没有<name>标签。
2016-04-06
if(book.getName()!=null && !book.getName().trim().equals(""))这个if语句中,
!book.getName().trim().equals("")加上这句我认为这是错误的逻辑。如果原XML文件<name>标签之间本来就是空格,也就是说有<name>标签,但是之间的值因某种原因被抹去了,按这if语句的逻辑就是:因为book.name的值是空格(不是null),所以新生成的XML文件没有<name>标签,这显然错了。
!book.getName().trim().equals("")加上这句我认为这是错误的逻辑。如果原XML文件<name>标签之间本来就是空格,也就是说有<name>标签,但是之间的值因某种原因被抹去了,按这if语句的逻辑就是:因为book.name的值是空格(不是null),所以新生成的XML文件没有<name>标签,这显然错了。
2016-04-06
view-source:http://news.baidu.com/n?cmd=1&class=enternews&tn=rss
2016-04-04