Microsoft.XMLDOM.1.0 - «данные, необходимые для выполнения этой операции, недоступны» - PullRequest
0 голосов
/ 20 января 2019

Я пытаюсь загрузить 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 голосов
/ 20 января 2019

Microsoft.XMLDOM устарела в течение многих лет.В COM land вы должны использовать Msxml2.DOMDocument (точнее Msxml2.DOMDocument.6.0). Связано .

Для объектов 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(), хотя. Смотри здесь .

...