我在PowerShell中使用Compare-Object来比较两个XML文件。它使用< =和=>充分显示两者之间的差异。我的问题是我希望看到上下文中的差异。由于它的XML,一行,一个节点是不同的,但我不知道它在整个文档中的位置。如果我能抓住之前的5行和之后的3行,它会给我足够的信息来理解它在上下文中的含义。有什么想法吗?
答案 0 :(得分:1)
You can start from something like this:
$a = gc a.xml
$b = gc b.xml
if ($a.Length -ne $b.Length)
{ "File lenght is different" }
else
{
for ( $i= 0; $i -le $a.Length; $i++)
{
If ( $a[$i] -notmatch $b[$i] )
{
#for more context change the range i.e.: -2..2
-1..1 | % { "Line number {0}: value in file a is {1} - value in file b {2}" -f ($i+$_),$a[$i+$_], $b[$i+$_] }
" "
}
}
}
答案 1 :(得分:0)
Compare-Object
带有一个 IncludeEqual
参数,可能会提供您要查找的内容:
[xml]$aa = "<this>
<they>1</they>
<they>2></they>
</this>"
[xml]$bb = "<this>
<they>1</they>
<they>2</they>
</this>"
Compare-Object $aa.this.they $bb.this.they -IncludeEqual
结果
InputObject SideIndicator
----------- -------------
1 ==
2 =>
2> <=