2013-03-22 98 views
0

我们在比较两个xml文件时存在严重的问题。我们需要根据关键值找出两个xml文件之间的差异。我们需要xml标记和xml标记值的差异。键值可以存在于文件中的不同位置。例如,下面是两个xml文件示例,其中id是学生的键。首先存在StudentDetails_one.xml文件ID 111,但是在StudentDetails_two.xml中存在id 222第一。XML文件差异

StudentDetails_one.xml

<Student> 
    <Id>111</Id> 
    <Name>AAA</Name> 
    <City>ABCD</City> 
    <Dept>CS</Dept> 
    <Mobile Number>11111</Mobile Number> 
</Student> 
<Student> 
    <Id>222</Id> 
    <Name>BBB</Name> 
    <City>ABCD</City> 
    <Dept>IT</Dept> 
    <Mobile Number>22222</Mobile Number> 
</Student> 

StudentDetails_two.xml

<Student> 
    <Id>222</Id> 
    <Name>CCC</Name> 
    <City>ABCD</City> 
    <DEPT>IT</DEPT> 
    <Mobile Number>22222</Mobile Number> 
</Student> 
<Student> 
    <Id>111</Id> 
    <Name>AAA</Name> 
    <City>ABCD</City> 
    <Dept>CS</Dept> 
    <Mobile Number>11111</Mobile Number> 
</Student> 

的下面两点不同可以在上面2个文件被注意到。

  1. 学生ID 222具有在两个不同名称值这2个XML files.In先向其BBB和在第二个文件中它的CCC。
  2. 学生ID 222的xml标记控制差异为部门在第一个文件中并且DEPT在第二个文件中。

有什么工具或技术可以找出上述两点区别吗?

注:以上一个仅仅是一个example.We有XML文件与数百tags.So它真的很难找出区别的学号位置是在这两个文件的不同

+0

对于标签匹配,您可以将它们小写;如果他们然后匹配小写明智的话,你可以用原始形式对照他们。如果他们然后不同它是一个拼写错误的副本。最好使用API​​读取XML结构为对象/字典/数组类型,以便您可以遍历它们并查看是否存在与TAG或VALUE不同的ID重复项。不应该那么辛苦。你更喜欢什么脚本/编程语言? – 2013-03-22 11:35:24

+0

嗨Allendar..nice info..thanks..i一般使用C++语言.. – user2090833 2013-03-22 14:12:16

+0

你可以做一些在C++中的XML解析器的研究(例如:http://stackoverflow.com/questions/170686/best-open-xml -parser换-C)。你主要需要的是将XML从解析器读出到多维数组中。从这一点开始,你可以通过该数组做循环(+内循环),并检查是否有冲突的匹配。根据这些冲突,您可以编写一个合并输出(再次通过XML解析器),并将其写入新的XML文件以及发现/更改/合并(执行一些人工验证)的报告。 – 2013-03-22 14:16:31

回答

0

有许多工具可用于有效的文件/文件夹比较。

下面是其中的一些,

(1)Araxis合并

(2)无法比拟的(我个人推荐这个)

希望它能帮助。

+0

我同意Beyond Compare - 它有一个规则驱动的比较,它将考虑到Xml语法,等等。很久以前我的生活很多! – 2013-03-22 11:37:33

+0

这些不是用于与某些参数进行纯镜像匹配吗? OP需要的是一个XML解析器,其中有一些代码将条目与另一个进行比较。也许我错了,但请向OP验证使用这些工具进行XML比较和错位。 -1为缺乏解释寿,对不起.. – 2013-03-22 11:37:50

+0

感谢您的答复..我尝试与Araxis合并。但问题是,它没有像上面的例子那样显示基于关键值的差异。请告诉我这个工具是否适用于这些工具。 – user2090833 2013-03-22 11:39:38

-1

如果我得到你想要的,有很多工具。 kdiff是一个很好的。

+0

为什么我们比较“文件”?我们必须比较XML,结果可能与正常的文件比较有很大不同。 -1的缺乏解释.. – 2013-03-22 11:38:56

+0

@ Tommi ..我认为kdiff没有找到关键基础上的差异..只是逐行比较.. – user2090833 2013-03-22 13:52:20

+0

是的,@Allendar已经指出它,所以它看起来像我没有得到你想要的:) – Tommi 2013-03-22 14:15:05

0

这里是图像

http://postimg.org/image/arf785kg3/

这是我所得到的,当我试图给定的例子。这是你正在寻找的东西吗? ?

+0

不,这是不是我正在寻找..因为这里的学生ID 222部门是一样的,它是IT。它应该以身份证为关键找到差异。希望它现在明确.. – user2090833 2013-03-22 13:42:23