我正在用 C++ 构建一个符合和验证的 XML 解析器,并试图使其轻量级,以便在袖珍电脑中使用。
一开始我决定像 SAX 一样向我的解析器添加一些“事件”,通知元素、处理指令等。
此事件由构建 xml 的 DOM 树的派生类获取。
当我试图主要处理实体(如果定义的话,它可以包含元素、pi 和内部注释)及其分辨率时,我的疑虑出现了。
例如,我可以创建一个 XMLEntityRef 类,该类引用在某些 XMLDocType 对象中定义的某些 XMLEntity,例如 .NET system.xml 解析器。
据我所知,对于大多数用途,应用程序需要知道一个元素、它的内容、它各自的属性和它们各自的值......只有字符串......它不关心元素内容是否由 cdata 对象、实体引用形成和/或纯文本......这同样适用于属性值。
因此,我的问题如下:将每个出现的 xml 对象传递给应用程序并让它(或帮助器类)通过连接文本和解析的实体引用来构建例如结果属性的值有什么好处?
如果我正在进行投票,请回答:您的应用程序是否需要了解 cdata 标签以及它们在 xml 文件中的位置,或者您让事情变得简单......您想知道一个元素的完整内容值一个字符串而不用担心它是如何构建的?
最好的问候, Mauro H. Leggieri