我有两个xml配置文件,我只需比较两个文件的结构并显示差异。 请注意:比较时,应忽略xml节点中的值。
前:
XML 1
----
<recipe>
<ingredients>
<ingredient1></ingredient1><ingredient2></ingredient2>
</ingredients>
<description></description>
</recipe>
XML 2
-----
<recipe>
<ingredients>
<ingredient1></ingredient1>
</ingredients>
<description></description>
<images></images>
</recipe>
结果应该是两个xml文件的区别。
xml1 <ingredient2>
xml2 <images>
非常感谢。
答案 0 :(得分:7)
我能想出的最快解决方案是:
[xml]$xml1 = @"
<recipe>
<ingredients>
<ingredient1>
</ingredient1>
<ingredient2>
</ingredient2>
</ingredients>
<description></description>
</recipe>
"@
[xml]$xml2 = @"
<recipe>
<ingredients>
<ingredient1>dada</ingredient1>
</ingredients>
<description>dadad</description>
<images></images>
</recipe>
"@
$docDiffs=Compare-Object ($xml1.SelectNodes("//*") | Select-Object -Expand Name) ($xml2.SelectNodes("//*") | Select-Object -Expand Name)
$docDiffs
您需要做一些工作才能获得所需的确切格式,但主要工作已经完成。如果你想改进它,你可以选择使用Select-XML。