Microsoft.XMLDOM.1.0-“完成此操作所需的数据不可用”

时间:2019-01-20 15:04:01

标签: powershell msxml

我正在尝试使用以下代码加载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引发错误“完成此操作所需的数据不可用”

enter image description here

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

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

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

对于COM XML对象,您还应该禁用异步处理,以便在下一条指令之前完成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中,默认情况下,土地加载/解析XML文件是同步的。不过,您将需要替换TransformNode()See here