代码之家  ›  专栏  ›  技术社区  ›  daisy

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

  •  0
  • daisy  · 技术社区  · 6 年前

    我正在尝试用以下代码加载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 回复  |  直到 6 年前
        1
  •  3
  •   Ansgar Wiechers    6 年前

    Microsoft.XMLDOM 已弃用多年。在你应该使用的土地上 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 Land加载/分析中,默认情况下XML文件是同步的。您需要更换 TransformNode() 但是。 See here .