【问题标题】:Compare XML and JSON files using the same algorithm [closed]使用相同的算法比较 XML 和 JSON 文件 [关闭]
【发布时间】:2017-03-18 20:34:45
【问题描述】:

简介:我正在从事一个项目,其中我有多个文件,这些文件代表我系统中特定资源(例如人)的配置文件(模型)。这些配置文件可以存储为 XML 和 JSON,它们用于验证作为另一个 XML 或 JSON 文件的特定资源(人)。因此,每个包含个人数据的文件都需要根据包含特定于该人的约束的配置文件进行验证。例如,个人资料可以指定该人不能有两个以上的联系选项(电话和电子邮件)。

问题:有多个系统拥有一个人的个人资料。如果我想从另一个系统中获取有关某人的数据,我需要先获取该人的个人资料,并检查我个人资料中的约束是否与其他系统中的个人资料兼容。这些配置文件每个都在 500 到 5000 行之间,我不知道我是否从其他系统获得了 XML 或 JSON。所以我需要编写一个算法,可以尽可能快地将我从其他系统获得的配置文件与我系统中的配置文件进行比较(无论格式如何),并且如果配置文件约束不匹配给用户一些选项可供选择。

问题:如果约束不兼容,我如何编写一个算法来找出两个配置文件之间的差异并为用户提供合并它们的选项。该算法也有一些限制:

  1. 需要计算差异并在相对较短的时间内显示选项。如果可能的话,我正在考虑不到 15-20 秒。一些配置文件大约有 5000 行,并且会检查不匹配的约束。
  2. 该算法需要用 C# 编写为类库,以便每个开发人员都可以在他的系统中使用它。
  3. 我读过 NoSql 数据库适用于 XML 和 JSON 等格式。因此,如果使用类库无法实现时间限制,我可以制作一个 Web 应用程序,用户可以在其中比较配置文件并合并它们。如果这是一个可行的解决方案,该应用可以将配置文件存储在 NoSQL 数据库中并对其进行操作。
  4. 应该维护一个算法

到目前为止我所知道的: 有像 XmlDiff 和类这样的库可以处理 xml 文件,但我还需要计算 json 文件。我知道也有 json 文件的类,但我不想编写和维护两个类库。我应该将 json 转换为 xml 还是反之亦然?我应该开始研究 NoSQL 吗?这对算法有什么帮助?

如果有人之前遇到过或知道如何以有效的方式计算 xml 和 json 文件,我需要一些起点和想法。

【问题讨论】:

    标签: c# json xml algorithm


    【解决方案1】:

    您需要找到其中一种格式的规范化形式。我会使用 JSON,因为它感觉问题较少(在 XML 中,一旦使用元素和属性编写,您就可以在语义上获得相同的信息)。但是选择权在你,两者都有很多规范化库。

    现在假设我为 XML 做了这个 -> JSON

    1. doc1 = transformToJson(xml)
    2. normalize(doc1) // 按字母顺序排列字段,删除空字段,在必要时使用引号,强制数据类型 - 如果架构可用
    3. 规范化(doc2)
    4. jsonCompare(doc1, doc2) //在 Java 中我会使用这样的东西 (https://github.com/flipkart-incubator/zjsonpatch),我想 C# 也会有同样的东西

    另一种可能性是将两种表示都转换为地图(因为两种格式都是有效的地图)并比较地图。


    NoSql 不会帮助你,它可能只是为你做了一些转换魔法......但它就像使用 SQL 数据库进行 Integer -> Date 转换(因为有一个函数)......

    【讨论】:

      猜你喜欢
      • 2011-06-19
      • 2013-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多