我正在 PowerShell 中构建一个比较引擎脚本,我需要能够比较的一件事是 XML 文件。当我使用本机 PowerShell 比较对象时,它返回 0 个差异,但如果我获取 outerxml(文本表示)和差异,我确实会得到差异。不幸的是,这会将所有内容都放在一个长字符串中,因此没有用。
然后我尝试使用 Microsoft 的 XmlDiffPatch 库,但是如果我使用示例程序或 PowerShell 中的库,我的 2 个 XML 文件将失败,但出现以下异常:
$d.Compare("c:\scripts\ps\ref.xml", "c:\scripts\ps\tgt.xml", $false)
Exception calling "Compare" with "3" argument(s): "Length cannot be less than zero.
Parameter name: length"
At line:1 char:1
+ $d.Compare("c:\scripts\ps\ref.xml", "c:\scripts\ps\tgt.xml", $false)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : ArgumentOutOfRangeException
如果无法访问该库的源代码,我不知道除了错误之外发生了什么。2 XML 在 IE 中的解析很好,所以我知道它们是有效的 XML。
有没有其他人见过这个?你是怎么解决的?