使用状态机进行Xml解析
Xml Parsing using state machines
在状态机中实现xml解析是一种好做法吗?如果有,我们要处理的主要国家是什么?
好吧,如果您正在"从头开始"编写自己的解析器—那么您可能应该制作这样的三明治:
- 纯文本字符串
- SAX-type回调
- 代码,构建DOM,基于前一个级别
所以1级可以(也应该)在FSM中完成,我会用一组状态来完成,如Initial, InTagName, InAttrName, InAttrValue, InCDATA等。不会有太多,只有几个页面切换语句。
但是,如果您需要正确的模式/名称空间/xpath等支持,仍然有大量的工作要做。
那么为什么不采用现有的解决方案呢?
相关文章:
- 防止在C++中选择错误文件时提升 xml 解析器崩溃
- 在 c++ 中将简单的 xml 解析为字符串
- 如何使用 Boost XML 解析器
- Boost::p roperty_tree:在XML解析器中使用std::vector<>在一个键中存储多个值
- 将Harrcascade加载到CascadeClalsifier时,XML解析错误
- Expat XML解析器(静态链接,DLL错误(缺少Define?)
- 我正在尝试使用C++开发XML解析器.但是在返回时声明的枚举值上遇到错误
- 与boost::property_tree XML解析器一起使用时,boost::协同程序库崩溃
- 带有 HTML 报告生成器的 c++ XML 解析器的体系结构
- 操作系统便携式 C/C++ XML 解析器
- 在 XML 解析程序上没有可行的重载
- 快速 XML 解析不当行为
- 从XML解析字符串时添加到n的反斜杠
- 支持SOAP请求/响应的最佳XML解析器
- XML 解析器包装器
- 使用 QT 进行 XML 解析
- c ++如何使用boost xml解析器读取XML并存储在map中
- 有人可以解释为什么我的XML解析器跳过这些HTML元素的原因
- 如何在boost中解析属性?Soap xml解析
- BoostSpirit,如何扩展xml解析