慕村8785123
2016-02-23 19:17
value不是获取节点值吗,但是xml文件中的换行空格不也是算作节点值吗,这样一开始传递给book对象的seiName()里的value不是一个空的值吗?????
我记得昨晚回答了,怎么今天没有了。
首先你要明白,handler的执行顺序,先是开始节点,startElement,然后Characters,然后在结束,再Characters方法代码块里,已经将value值赋值了,就是那句value=new String(ch, start, length); 这一句就赋与了相对应的Element的值,也就是说qName等于name时,其实已经自动传入对应的start,length进去了,因为ch是数组嘛。
所以在endElement处进行判断如果qName.equals("name"),就 book.setName(value);为什么要判断呢,因为xml的换行空格算子节点,那么这些节点名字肯定不是name。
所以整体的一个机制:你可以理解成handler类似一种带处理功能的指针,遍历xml文件时,从开头读到结尾是一个一个节点开始。而里面相应的变量的值在变化,变化的顺序startElement,然后Characters,然后在endElement。
Java眼中的XML---文件读取
83199 学习 · 431 问题
相似问题