栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何使用SAX正确解析XML?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何使用SAX正确解析XML?

到目前为止,我发现使用SAX解析XML的最好方法是在相关的回调中使用堆栈和条件语句。这是一篇描述它的文章,以及我的摘要:

基本前提是,在解析文档时,您将创建对象来存储已解析的数据,然后将它们推入堆栈中,在堆栈顶部偷看以将数据添加到当前元素,并在每个元素的末尾元素将其弹出堆栈并将其存储在父级中。

效果是先解析元素树的深度,然后在每个分支的末尾将其回滚到父级,直到剩下一个包含所有已解析数据的对象(例如ConnectionList)要使用的。本质上,您最终得到了一系列反映原始XML结构的对象

这意味着您需要一些数据对象,这些对象可以以与XML相同的结构存储数据。复杂元素通常将成为类,而简单元素通常将成为类中的属性。根元素通常由某种列表表示。

首先,创建一个堆栈对象以在解析数据时保存数据。

然后,在每个元素的开头,使用

localName.equals()
方法确定其类型,创建适当类的实例,然后将其推入堆栈。如果该元素是一个简单元素,则可能会将其建模为表示父元素的类中的一个属性,并且您将需要一系列标志,以告知解析器是否遇到此类元素以及它是什么元素。在该
characters()
方法中进行处理。

使用该

characters()
方法读取实际数据,然后再次使用条件逻辑基于标志的值确定如何处理数据。本质上,您可以窥视栈顶,并使用适当的方法将数据写入对象,并在必要时从文本转换。

在每个元素的末尾,您会弹出堆栈的顶部,并

localName.equals()
再次使用它来确定如何将其存储在对象之前(例如,需要调用哪个setter方法)

到达文档末尾时,您应该已经捕获了文档中的所有数据。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/574150.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号