我使用的程序就像一个平台,它创建了它使用的对象实例,并以xml格式存储在数据库中。该程序有一种方法可以将这些对象“转储”到xml集合中。
我希望在我们的生产环境和开发环境之间进行转储差异,以便能够确定它们之间的任何增量。
由于转储依赖于数据库中项目的顺序,因此正常的差异没有意义。我需要的是在比较之前在两个转储中对xml元素进行排序的方法,以便diff更加智能并更准确地反映增量。
例如:
文件1:
<?xml version="1.0" encoding="UTF-8"?>
<foo>
<bar1>stuff1</bar1>
<bar2>stuff2</bar2>
</foo>
文件2:
<?xml version="1.0" encoding="UTF-8"?>
<foo>
<bar2>stuff2</bar2>
<bar1>stuff1</bar1>
</foo>
我正在寻找一种方法,其中上述文件的差异不会产生任何差异,因为唯一的区别是foo元素的空格和子顺序。
有关如何使用大文件完成此操作的任何想法?
以下适用于小文件:
使用http://prettydiff.com/我可以通过确保选择“排序标记片段”选项来实现此目的。在此之后,我能够将上述内容区分开来,并将其显示为匹配。
我需要在本地执行类似的操作,这些文件适用于可能相当大的文件。
答案 0 :(得分:5)
考虑到这一点,我想是否有办法从命令行对xml文件进行排序,然后我就可以对文件进行差异化了。
我的跟进谷歌通过我的想法引导我到以下地方:https://superuser.com/questions/79920/how-can-i-diff-two-xml-files
在上面,关键是#outer {
position: relative;
background-color: lightgoldenrodyellow;
margin: 0px;
top: 0px;
left: 0px;
width: 300px;
/* changes made */
height: 195px;
display: flex;
flex-direction: column;
}
#heading {
background-color:palevioletred;
display:block;
text-align:center;
}
#container {
position: relative;
overflow: auto;
background-color:aquamarine;
/* height:160px; */
}
。由于我使用的是mac,上面的内容为我提供了以下问题,这对我有用:
<div id="outer">
<span id="heading">
List of Data
</span>
<div id="container">
<ul id="data">
<li>Data Item 1</li>
<li>Data Item 2. This data item requires more than 300 px of width and wraps as expected.</li>
<li>Data Item 3</li>
<li>Data Item 4</li>
<li>Data Item 5</li>
<li>Data Item 6</li>
<li>Data Item 7</li>
<li>Data Item 8</li>
<li>Data Item 9</li>
<li>Data Item 10. A vertical scrollbar has been added to the list div</li>
</ul>
</div>
</div>
如果您使用的是Linux,或者使用像cygwin一样安装/设置Windows,上面的内容也应该适合您。