【问题标题】:Compare two XML files using VBScript?使用 VBScript 比较两个 XML 文件?
【发布时间】:2015-10-14 17:15:07
【问题描述】:

我有两个 XML 文件一个是另一个的修改版本。每个节点有大约 80 个节点,每个节点有大约 30 个子节点(是的,总共大约 2400 个节点)。

差异很小(通常在子节点值中),我需要将不同的节点放在单独的文件中。如果子节点有差异,则子节点及其父节点应包含在单独的文件中。

我正在通过逐个节点检查。第一个文件中的节点以及第二个文件中的所有节点。然后是第一个文件中的第二个节点,第二个文件中的所有节点等等。如果匹配,则对匹配节点的子节点重复相同的操作。

上面真的是乏味,而且程序需要一些时间来执行(大约7000个节点比较)。 有没有更快的比较方法?

【问题讨论】:

  • 只是值改变了,还是元素顺序也改变了?
  • 通常是值,但也可能删除一些元素(节点)
  • 我建议你学习如何在 VBScript 中解析 XML 文件:xmlfiles.com/dom/dom_access.asp
  • 我知道如何解析 XML 文件,这不是这里的问题
  • Google XmlDiffPatch 看看它是否可以替代使用它进行比较,然后读取它创建的 diffgram 文件。

标签: xml vbscript xml-parsing


【解决方案1】:

由于您的 XML 文件非常大,使用 DOM Parser 将是一个坏主意,因为它会占用大量内存。另一种解决方法是实现 SAX 解析器。 SAX 解析器按顺序解析 XML 文件并使用具有三个函数(startElement、endElement 和字符)的处理程序。

逐个节点检查是正确的想法。嵌套循环肯定会花费大量时间,但如果与 SAX 解析器一起使用,它们在内存方面会很有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-25
    • 1970-01-01
    • 1970-01-01
    • 2018-11-08
    相关资源
    最近更新 更多