php - 比较两个具有相同结构的 XML 文件并找出差异

标签 php javascript xml perl diff

我有两个 XML 文件。两个 XML 文件的结构如下:

<file1>
       <table>
              <name>...</name>
              <columns>
                       <col>
                             <name>...</name>
                             <type>...</type>
                             <fkey>...</fkey>
                       </col>
                       <col>
                             <name>...</name>
                             <type>...</type>
                             <fkey>...</fley>
                       </col>
               <columns>
       </table>
      <table>
              <name>...</name>
              <columns>
                       <col>
                             <name>...</name>
                             <type>...</type>
                             <fkey>...</fkey>
                       </col>
                       <col>
                             <name>...</name>
                             <type>...</type>
                             <fkey>...</fley>
                       </col>
               <columns>
       </table>
 </file1>

两个 XML 文件都有相同的表格,但列数可能不同。我想要做的是比较每个表的每一列并找出类型和 fkey 的差异(如果有的话)。我还想知道第二个 XML 文件中缺少哪些列。我想将此信息保存到另一个文件(可以是任何格式)。

我知道 Perl、PHP 和 JavaScript,但我以前没有使用过 XML。

现在我想知道的是从哪里开始以及使用哪些工具?完成上述任务的最佳方法是什么?是否有任何模块提供在两个 XML 文件之间执行差异的功能?

编辑:我在 Linux 平台 (RedHat) 上工作。

最佳答案

我曾经写过一个模块来做类似的事情(没有优化但它确实为我做了一些事情)

http://ekawas.blogspot.ca/2008/11/comparing-xml-documents-semantically.html

  use XML::SemanticCompare;
  my $x = XML::SemanticCompare->new;

  # compare 2 different files
  my $isSame = $x->compare($control_xml, $test_xml);
  # are they the same
  print "XML matches!\n"
    if $isSame;
  print "XML files are semantically different!\n"
    unless $isSame;

  # get the diffs
  my $diffs_arrayref = $x->diff($control_xml, $test_xml);

关于php - 比较两个具有相同结构的 XML 文件并找出差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10104846/

相关文章:

java - 将绝对文件路径从 java 代码传递到 xslt document()

php - 用增量值替换字符串

javascript - 我如何用我的数据库值显示图表

javascript - 当语句后面有循环时,为什么 JS 警报会在 console.log 之前执行

java - 仅当某些标签可用时才解析 XML 响应

c# - 我如何告诉 LINQ 忽略不存在的属性?

php - 如何在php/mysql中传递下拉动态值

php - mysql | mysql |来自空列和 FIND_IN_SET 的请求

c# - 如何在 mootools 中传递对象本身(就像我们在 C# 中所做的那样)?

javascript - 使用HTML5 Canvas 拖放不规则图像