【发布时间】:2009-11-13 13:54:57
【问题描述】:
什么是 xml 解析器?有多少种解析器?哪个是解析 xml 文档的最佳 xml 解析器? xml 解析器将如何工作?谁能简单地说一下?
【问题讨论】:
-
在给出关于 XML 解析器的答案后,你怎么能问这个问题? stackoverflow.com/questions/1722140/…。您显然已经知道解析器是什么,并且有不同的类型。巨魔?
什么是 xml 解析器?有多少种解析器?哪个是解析 xml 文档的最佳 xml 解析器? xml 解析器将如何工作?谁能简单地说一下?
【问题讨论】:
XML 解析器与任何其他解析器一样,是一种将传输表示(在本例中为文本)转换为您可以从代码中访问的内容(在本例中为树或一系列解析事件)的工具,取决于解析器类型)。
现在有两种主要类型的 XML 解析器:DOM 解析器,从 XML 结构创建内存对象树和 串行解析器,例如 @ 987654322@.
对于 DOM 解析器,解析器必须读取整个 XML 文档并构造内存中的对象:树节点、属性节点等,并将它们放入表示 XML 文件的合适树结构中。这有明显的好处,例如对整个树的随机访问,但也有缺点,主要是完整的树必须驻留在内存中,对于大文件也可能相当大,并且必须解析完整的文件在您开始处理数据本身之前。
另一方面,SAX 是一种串行方法,它简单地扫描 XML 文件并根据它找到的句法元素生成 events,例如开始标记、属性、结束标记等。你肯定也可以从该信息创建树结构,但通常这种方法更轻量:您可以在读取和解析文档时开始处理数据,而不必等到全部完成。但是,如果您愿意,您不能访问整个树。您可以在树内向前或向后跳跃等。
解析 XML 文档的理想方法取决于您的特定应用程序需求。如果您必须在不同时间点查看树中的任意位置,那么显然 DOM 是最好的方法。但是,如果您的 XML 文档的结构能够很好地从头到尾阅读,而不必再次返回,那么 SAX 应该可以工作。例如,对于 XHTML 显示,SAX 将是正确的方法,即使您仍然需要在后台使用对象模型。但是对于单独的显示目的,通常只需要查看进来的标签并渲染它们就足够了。
【讨论】:
XML 解析器是将 XML 转换为可访问对象的工具 (编辑:跟随 cmets) 或成一系列事件。基本上任何你可以用来消费和操作 XML 数据的东西
您能为其他问题指定一种语言吗?
【讨论】:
DOM 和 SAX 是比较老的技术,最新的可以查看 STaX 和 VTD-XML
【讨论】: