代码之家  ›  专栏  ›  技术社区  ›  myborobudur

带有XML diff和merge的版本控制

  •  10
  • myborobudur  · 技术社区  · 14 年前

    我正在寻找一个开源的版本控制工具,可以区分和合并XML文件。

    我要找到这样一个工具的困难是,我需要一个XML文件的正确合并,比较节点而不是行。

    有什么想法吗? 谢谢!

    6 回复  |  直到 14 年前
        1
  •  2
  •   abd3721    8 年前

    我过去用过的是 diffxml . 对于SVN或Git这样的VCS,您可以将其用作diff命令。

        2
  •  6
  •   Jim Garrison    14 年前

    不幸的是,没有一个适合所有人的解决方案来解决这个问题。XML差异对您认为不同的内容非常敏感。在一种情况下,子节点的顺序可能很重要,而在另一种情况下(甚至在同一个文件中),它可能是不相关的。

    看一看 XMLUnit . 尽管它的目标是单元测试,但它是一个完整的XML差异引擎。您必须告诉它(在代码中)如何确定两个节点是否有资格进行比较,然后如何处理发现的所有潜在差异(即,它们在您的应用程序中是否真实)。它检测到“差异事件”的详尽列表,包括

    • 属性顺序
    • 属性数
    • 子节点顺序
    • 子节点数
    • 隐式与显式属性值
    • 注释差异
    • doctype差异
    • 命名空间差异

    还有很多。其中任何一个对您的应用程序都可能是重要的或不重要的,只有您可以决定。值得一看,但要想得到你想要的东西需要一些工作。

        3
  •  2
  •   user420442    14 年前

    Project: Merge 旨在解决这个问题:通过单片机软件比较和合并XML文件。

    恐怕它也不是免费的,但是它比其他声称能够比较和合并XML的工具便宜得多。

        4
  •  1
  •   troelskn    14 年前

    您正在寻找一个差异工具,它只是VCS的一个子集。所有VCS都可以使用外部程序来区分文件。由于外部diff工具可以是任何东西,所以它也可以是由您编写的脚本,专门用于解析和比较两个XML文档。

    我不知道这是否会让你更容易找到你要找的东西,但可能。

        5
  •  -1
  •   dashtinejad    10 年前

    对于虚拟/懒惰的用户来说,它应该是一个简单的多功能一体工具。API或控制台程序不适合。它看起来确实不存在于开源世界中。

    ClearCase可以做到,但价格昂贵。 Oxygen 可以合并,但也不是免费的。

        6
  •  -2
  •   Piotr Czapla    14 年前

    正如其他人指出的,你只需要一个好的差异工具,而不是风投。

    不幸的是,我没有听说任何支持XML的图形化diff工具。所以我将使用一个常规的diff工具(winmerge或k3diff),然后我将使用您喜欢的任何XML验证工具来验证合并产生的XML。