【问题标题】:Generic reader for all formats?所有格式的通用阅读器?
【发布时间】:2016-04-22 12:19:16
【问题描述】:

我想知道是否有一些可能的方法来创建一个通用阅读器,它可以读取 XML 或 JSON 消息,而无需检查它是什么类型的消息并为每个消息编写一个阅读器。

【问题讨论】:

  • 如果只是 JSON 和 XML,你也许可以使用 JaxB 之类的东西。

标签: java json xml parsing


【解决方案1】:

三种技术通常用于解析多种可能格式的消息:

  1. 声明:通过参数或标头值告知格式。 [首选]
  2. 嗅探:词法向前扫描到流中以识别格式。
  3. 回退:尝试在一种格式下解析,如果解析失败则回退到另一种格式。

对于#1 或#2,一旦确定了消息类型,就会将消息分派给适当的解析器。一个单一的、同质的解析器通常不用于两种截然不同的格式,例如 XML 和 JSON。

#3 通常效率低下,但对于小消息或一次性代码可能是可行的。

【讨论】:

  • 我目前拥有的是实现 JSON 和 XML 的验证器,但问题是我不知道通过的消息是否会以另一种格式插入到数据库中像逗号分隔的文本。所以我需要一些可以将所有内容读入通用格式或创建验证器进程来检查格式的东西。
  • 所以#1 对你来说是不可能的;你剩下#2或#3。此外,您还有一个设计决策,即是跨格式分发验证检查还是转换为核心格式并集中验证。在不了解您的用例的情况下,我只能说这么多,而且 StackOverflow 不是解决广泛设计决策的论坛。希望我至少在前期考虑方面有所帮助。
猜你喜欢
  • 1970-01-01
  • 2010-11-26
  • 1970-01-01
  • 2016-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多