2011-08-03 61 views
0

变量$returnedxml是一个以xml形式生成的sql查询结果。我需要从它那里得到的内容 'RELEASEPATH' \\sharespace\test1\\10.0.1212.00如何从PowerShell的xml文件中获取一些内容?

<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类,似乎我错了。那么我能做些什么呢?

回答

1

您的变量$Returnedxml必须是具有绝对路径的文件名。但目前它是类System.Xml.XmlDocument的一个对象。

所以改变你的变量,然后你可以读取文件。

另一方面,如果您已在$Returnedxml中拥有XmlDocument对象,则不必将其读入$xmldoc。两人都来自同一班。只需使用$ Returnedxml

4

由于处理XML数据对于如此多的管理任务来说非常重要,因此Powershell具有XML类型加速器。因此,这会工作,以及:

[xml]$xmldoc = $returnedxml 
$xmldoc.releasepath 
+0

根据错误消息,它已经是一个XML文档。所以你可以跳过第一行。 – JasonMArcher

+0

什么错误信息? – EBGreen

+0

来自OP的错误消息是找不到文件错误 – EBGreen

2

我刚刚读入一个字符串...

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

然后使用XPath来获取值出来的......

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

XPath对于从XML文件中提取内容非常有效,比使用xmldoc更简单(编码明智)。

0

您正在使用错误的加载;那一个是用于文件的。使用LoadXML代替:

$xmldoc.LoadXml($Returnedxml) 
相关问题