SPL: 专门处理开放格式文件 (txt/csv/json/xml/xls)的Java库


在 Java 应用程序中处理 txt、csv、json、xml 和 xls 等开放格式的数据文件是很常见的。Java 中的硬编码非常复杂,因此我们经常求助于某些现成的开源包。但每个包都有其弱点。

解析库
这种类型的类库可以通过比硬编码数据检索更简单的编码过程来读取 Java 中的外部文件作为后者的内部对象。常见的产品包括用于解析 txt 和 csv 文件的 OpenCSV,用于解析 json 文件的 SJ.json、Gson 和 JsonPath,用于解析 xml 文件的 XOM、Xerces-J、Jdom、Dom4J 和 POI,即 xls 解析器。JsonPath 提供 JsonPath 语法,Dom4J 提供 XPath 语法来处理简单的过滤计算。但这些库一般计算能力较弱,需要求助于硬编码或其他类库来完成计算任务。

Spark
Spark作为Scala的类库,支持结构化数据文件,计算能力比较强。该库的缺点是缺乏解析能力,需要第三方类库的帮助,比如spark-xml解析xml和spark-excel或者解析xls。这使得计算不像使用本机类库那样稳定。Scala 编程语言有缺点。远比Java陡峭的学习曲线意味着高昂的学习成本,而且过于频繁地发布新版本会给实际应用带来不便。

嵌入式数据库
解析文件并将其写入嵌入式数据库,如 SQLite、HSQLDB 和 Derby,使得使用 SQL 强大的计算能力成为可能。然而,嵌入式数据库具有复杂的框架,数据加载过程相当麻烦,导致严重的延迟。SQL强大的计算能力并不总是强大的,因为它只擅长计算二维数据,而不擅长处理像json/xml这样的分层数据。
某些类库,包括simoc csvjdbc、xiao321、Csvjdbc、xlsjdbc等文件JDBC驱动,以及Tablesaw、Joinery等DataFrame类库,可以计算结构化数据文件,但不成熟,计算能力弱,实用价值低。

SPL 是更好的选择
SPL 是一种基于 JVM 的开源编程语言。提供简单的解析方式读取规则或不规则的txt、csv、json、xml、xls文件,提供专门的数据对象统一表达二维数据和分层数据,提供丰富的功能,满足各种业务计算要求。

SPL Official Website  http://www.scudata.com
SPL Feedback and Help  https://www.reddit.com/r/esProc
SPL Learning Material  http://c.raqsoft.com
SPL Source Code and Package  https://github.com/SPLWare/esProc