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.
我正在尝试使用以下代码加载 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.