问题描述
我使用了多种类型的文件转换器,例如word到pdf,XML到json,word到txt等。 他们在后端如何工作?是否每个人都遵循一些特定的准则?在实现方式上是否有一些相似之处。
我尝试搜索它,但是大多数文章将我带到可以转换文档的Web应用程序,但是没有一篇可以清楚地说明它的完成方式。
解决方法
所有这些都通过将第一个文档解析为数据结构来工作。然后使用递归从该数据结构生成其他格式的文档。
解析本身是一个巨大的话题,人们可以选择计算机科学课程。但长话短说,它是通过将文档分解为 tokens ,然后使用一组标准方法之一将这些tokens放入解析树中而进行的。它们具有各种奇特的名称,例如Recursive Descent和LALR(1)。那就是您想学习的大多数理论所在的地方。
例如,如果要编写JSON到XML转换器,则首先需要解析该JSON。 A JSON Parser显示了如何使用递归下降从头开始编写。编写完成后,您只需要编写一个递归函数即可,该函数采用每种数据类型,并对其进行适当的处理以生成所需格式的文本。
顺便说一句,您也可以编写一个“文档转换器”,将文档格式转换为相同的文档格式。为什么有人要这样做?两个最常见的用例是对prettify或minify进行编码。尽管实际上只处理一种格式,但是其处理原理完全相同。