sax解析xml文件实例一(注意endElement 内部最后 currentTag=null)

本文重点两点:1.再一次解析一个xml,验证之前的理解。 2. 发现endElement内最后一定要 currentTag = null

------------------------------------------------------------------------------------------------------------------

注意:一定要在endElement内最后currentTag = null .

原因:如前一篇所讲,对于非根节点(eg :<name>),在经历 startElement(currentTag = name) , characters (currentTag = name , currentValue = "刘德华") , endElement()后,还会触发一次 characters 。

所以,1. 若endElement内不currentTag = null 的话,那endElement后的currentTag 还是 “name” , 然后再触发一次 characters ,但此时 characters 内的 new String (ch , start ,length) 是空值,不是之前第二步的"刘德华",这样的话本来在第二步中已经赋值的 name = 刘德华 ,会在第四步中 name = 空。

 2. 若endElement内最后 设置currentTag = null , 则 触发第四步 characters时,原来在第二步已经被保存的name = "刘德华" 就不会被 更新为 空值。因为根据characters内的判断条件可知,currentTag = 空时不进行操作。


总结一句话:在解析一个node节点结束标签(例如</name>)时,会触发endElement和characters方法,要在endElement方法内,将currentTag = null .

(本例中可以把 endElement内最后的 currentTag = null 删除作为测试)

-----------------------------------------------------------------------------------------------------------------

student.xml

<?xml version="1.0" encoding="UTF-8"?>
<StudentInfo>  
    <student>  
        <name>刘德华</name>  
        <sex>男</sex>  
        <lesson>  
            <lessonName>Spring整合开发</lessonName>  
            <lessonScore>85</lessonScore>  
        </lesson>  
        <lesson>  
            <lessonName>轻量级J2EE应用开发</lessonName>  
            <lessonScore>95</lessonScore>  
        </lesson>  
        <lesson>  
            <lessonName>Ajax应用开发</lessonName>  
            <lessonScore>80</lessonScore>  
        </lesson>  
    </student> 	 
    <student>  
        <name>宋慧乔</name>  
        <sex>女</sex>  
        <lesson>  
            <lessonName>Spring整合开发</lessonName>  
            <lessonScore>80</lessonScore>  
        </lesson>  
        <lesson>  
            <lessonName>轻量级J2EE应用开发</lessonName>  
            <lessonScore>85</lessonScore>  
        </lesson>  
        <lesson>  
            <lessonName>Ajax应用开发</lessonName>  
            <lessonScore>90</lessonScore>  
        </lesson>  
    </student>  
</StudentInfo>


程序运行结果:

name :宋慧乔
sex :女
Ajax应用开发=90
Spring整合开发=80
轻量级J2EE应用开发=85
-----------------------------------
name :刘德华
sex :男
Spring整合开发=85
轻量级J2EE应用开发=95
Ajax应用开发=80
-----------------------------------
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值