Microsoft.XMLDOM.1.0 - "the data necessary to complete this operation is not available"

Microsoft.XMLDOM.1.0 - "the data necessary to complete this operation is not available"

我正在尝试使用以下代码加载 XML:

$xsl = new-object -ComObject Microsoft.XMLDOM.1.0
$xsl.load('http://172.16.177.200/1.xml')
$xsl.transformNode($xsl)

但是,$xsl.load 仅在 XML 是本地文件时才有效。使用上面的代码,transformNode 引发错误 "the data necessary to complete this operation is not available"

尝试添加 start-sleep 5,没有帮助。

有什么想法吗?

Microsoft.XMLDOM 已被弃用多年。在 COM 领域,您应该使用 Msxml2.DOMDocument(更具体地说是 Msxml2.DOMDocument.6.0)。 Related.

对于 COM XML 对象,您还应该禁用异步处理,以便 loading/parsing XML 文档在下一条指令之前完成。

$xsl = New-Object -ComObject 'Msxml.DOMDocument.6.0'
$xsl.Async = $false
$xsl.Load('http://172.16.177.200/1.xml')

话虽如此,由于 PowerShell 建立在 .Net 之上,因此建议使用 .Net 而不是 COM:

$xsl = New-Object Xml
$xsl.Load('http://172.16.177.200/1.xml')

在 .Net land loading/parsing 中,XML 文件默认是同步的。不过,您需要替换 TransformNode()See here.