使用相同的算法比较XML和JSON文件

时间:2017-03-18 20:34:45

标签: c# json xml algorithm

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

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

问题:如何编写可以找到两个配置文件之间差异的算法,并在用户不相容的情况下为用户提供合并选项的选项。算法也存在一些限制因素:

  1. 需要计算差异并在相对较短的时间内显示选项。如果可能的话,我想的时间不到15-20秒。有些配置文件大约有5000行,并且会检查不匹配的约束。
  2. 算法需要用C#编写为类库,以便每个开发人员都可以在他的系统中使用它。
  3. 我读过有关NoSql数据库的内容,适用于XML和JSON等格式。因此,如果时间限制无法通过类库实现,我可以创建一个Web应用程序,用户可以在其中比较配置文件并合并它们。如果这是一个可行的解决方案,该应用程序可以将配置文件存储在NoSQL数据库中并对其进行操作。
  4. 应该有一个算法来维护
  5. 到目前为止我所知道的:有像XmlDiff这样的库和用于处理xml文件的类,但我还需要计算json文件。我知道json文件也有类,但我不想编写和维护两个类库。我应该将json转换为xml,反之亦然?我应该开始研究NoSQL吗?这对算法有什么帮助?

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

1 个答案:

答案 0 :(得分:1)

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

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

  1. doc1 = transformToJson(xml)
  2. normalize(doc1)//按字母顺序排序字段,删除空字段,必要时使用引号,强制数据类型 - 如果架构可用
  3. normalize(doc2)
  4. jsonCompare(doc1,doc2)//在Java中我会使用类似这样的东西(https://github.com/flipkart-incubator/zjsonpatch),我想C#会有相同的东西
  5. 其他可能性是将两种表示转换为地图(因为两种格式都是有效的地图)并比较地图。

    NoSql不会帮助你,它可能只是为你做一些转换魔术......但它就像使用一个SQL数据库进行整数 - >日期转换(因为有一个功能)...