Как получить некоторый контент из XML-файла PowerShell? - PullRequest
0 голосов
/ 03 августа 2011

Переменная $returnedxml - это результат запроса SQL, формирующийся в формате xml. Мне нужно получить содержимое 'releasepath' \\sharespace\test1\\10.0.1212.00 из него

<ReleasePath>\\sharespace\test1\\10.0.1212.00</ReleasePath>

Вот мой код:

 $xmldoc= new-object xml.xmldocument

 $xmldoc.load($Returnedxml)

 $xmldoc.releasepath

Вот возвращенная ошибка:

Exception calling "Load" with "1" argument(s): "Could not find file 'C:\Users\admin\System.Xml.XmlDocument'."
At D:\connecttods3andinvoke.ps1:47 char:14
+  $xmldoc.load <<<< ($Returnedxml)
+ CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException

Я думал, что xml.xmldocument - это класс .net, похоже, я ошибался. Так что я могу сделать тогда?

Ответы [ 4 ]

4 голосов
/ 03 августа 2011

Поскольку обработка данных XML является неотъемлемой частью многих задач управления, Powershell имеет ускоритель типов XML.Так что это будет работать также:

[xml]$xmldoc = $returnedxml
$xmldoc.releasepath
2 голосов
/ 03 августа 2011

Я просто прочитал это в строку ...

$file = [IO.File]::ReadAllText($filename)

затем используйте xpath для извлечения значений из него ...

$releasePath = $file | SelectXml "//ReleasePath"

XPath действительно эффективен для извлечения вещей из файла XML, гораздо проще (с точки зрения кодирования), чем использование xmldoc

1 голос
/ 03 августа 2011

Ваша переменная $Returnedxml должна быть именем файла с абсолютным путем.Но в настоящее время это объект класса System.Xml.XmlDocument.

. Поэтому измените свою переменную, и вы сможете прочитать файл.

Или, с другой стороны, если у вас уже есть объект XmlDocument$Returnedxml тогда вам не нужно читать это в $xmldoc.Оба из одного класса.Просто используйте $ Returnedxml

0 голосов
/ 04 августа 2011

Вы используете неправильную нагрузку;тот для файлов.Используйте LoadXML вместо:

$xmldoc.LoadXml($Returnedxml)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...