给出此XML
<?xml version="1.0"?>
<Locations>
<Location id = "Mac">
<Rollouts>\\Mac\Rollouts</Rollouts>
<Support>\\Mac\Px\Support</Support>
<UnitTests>C:\Px_Tools_Unit_Tests</UnitTests>
<FlexLMServer>Mac</FlexLMServer>
<RSAccelerator>Mac</RSAccelerator>
</Location>
<Location id = "Px">
<Rollouts>\\Px\Rollouts</Rollouts>
<Support>\\Px\Support</Support>
<UnitTests>C:\Px_Tools_Unit_Tests</UnitTests>
<FlexLMServer>Px</FlexLMServer>
<RSAccelerator>Px</RSAccelerator>
</Location>
<Location id = "Rotterdam">
<Rollouts>\\Mac\Rollouts</Rollouts>
<Support>\\Mac\Px\Support\Rotterdam</Support>
<UnitTests>C:\Px_Tools_Unit_Tests</UnitTests>
<FlexLMServer>Mac</FlexLMServer>
<RSAccelerator>Mac</RSAccelerator>
</Location>
<Location id = "Berlin">
<Rollouts>\\Px\Rollouts</Rollouts>
<Support>\\Px\Support\Berlin</Support>
<UnitTests>C:\Px_Tools_Unit_Tests</UnitTests>
<FlexLMServer>Px</FlexLMServer>
<RSAccelerator>Px</RSAccelerator>
</Location>
</Locations>
我想验证所有“位置”节点都包含相同的子节点集。子节点的实际名称是可变的,数字也是可变的。我只想确保所有“位置”节点都具有相同的子节点。我还希望能够报告有用的错误消息。如果柏林缺少支持,我想说,如果鹿特丹有一个额外的垃圾节点,我想说。 我难过的是逻辑。我可以假设第一个是“正确的”,然后将所有内容进行比较。或者,我可以先获得一个计数,并假设最常发生的计数是正确的,并以其中之一为例。但是我怀疑可能还有更好的方法,此刻我很想念。也许将每个位置放入子节点名称的数组中,然后依次对每个位置进行比较对象,将错误写入另一个数组,然后首先检查是否已记录错误? 请注意,我仅验证子节点名称,而不验证InnerXML或顺序。 那么,有什么神奇的PowerShelly答案,还是我会对此一概而论(可能会因为我在第一个分支中效率低下而将其重写5次)?