【问题标题】:How to compare and find the differences between two XML files in cocoa?如何比较和查找可可中两个 XML 文件之间的差异?
【发布时间】:2023-03-07 03:54:01
【问题描述】:

这是一个由两部分组成的问题,用于处理 40mb 的 xml 文件。

• 对于在后台持续运行的程序,在内存中存储的合理大小是多少?
• 如何查找 XML 文件中的更改。

所以在第一次读取时,XML 被加载到 NSData,然后上传到服务器。

现在,与其每次更改时都上传 40mb 的 XML,我更愿意上传仅包含已更改内容的“增量”文件。该程序将监视文件的更改,并在修改时激活。从我所见,我需要解析旧版本的 xml 文件并解析修改后的 xml 文件,然后比较它们?每次修改文件时都这样在内存中存储80mb是不合理的吗?现在我假设这必须使用 DOM 解析器来完成,因为我看不出如何使用 SAX 解析器来比较这样的两个文件,因为它只存储了部分文件?

我是这方面的新手,所以任何帮助都将不胜感激!

【问题讨论】:

    标签: objective-c xml cocoa xml-parsing compare


    【解决方案1】:

    比较两个文件:

    有很多方法可以做,(由于要考虑文件,我可能不正确):

    sdiff file1.xml file2.xml 一个unix命令 您可以将此命令与苹果脚本一起使用。

    -[NSFileManager contentsEqualAtPath:andPath:] 该方法检查给定路径下的两个文件是否为同一个文件,然后比较它们的大小,最后比较它们的内容。

    其他部分:

    后台进程考虑什么大小,我不这么认为,对于应用程序来说很重要。您可以将这些保存到临时文件中。甚至 safari 也使用 130+ MB,因为您可以通过活动监视器轻松检查。

    【讨论】:

    • 根据苹果文档, contentsEqualAtPath:andPath: 仅返回“YES”或“NO”,具体取决于文件是否相同。所以这不是我要找的,我需要知道 XML 中具体的哪些部分发生了变化。
    【解决方案2】:

    NSXMLParser 最终成为最有用的

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-28
      • 2018-09-14
      • 2014-02-02
      • 1970-01-01
      • 1970-01-01
      • 2015-08-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多