PowerShell:从选定的xml中获取节点值

tjjdgumg  于 12个月前  发布在  Shell
关注(0)|答案(3)|浏览(185)

我有以下XML。我想使用PowerShell获取Version节点的值(即1.0.0.0)。

<?xml version="1.0" encoding="utf-8"?>
<ImportExportXml version="9.2.23105.230" >
  <SolutionManifest>
    <UniqueName>ShowandTell</UniqueName>
    <LocalizedNames>
      <LocalizedName description="Show and Tell" languagecode="1033" />
    </LocalizedNames>
    <Descriptions />
    <Version>1.0.0.0</Version>
    <Managed>0</Managed>    
  </SolutionManifest>
</ImportExportXml>

字符串
到目前为止,我已经尝试过了,下面

$myVar = Select-Xml -Path "C:\Coding\Solution.xml" -XPath "//Version"


当我打印$myVar时,我得到以下结果,


的数据
然而,我最好是以非表格格式获取Version标记的值。我也尝试了Get-Content,但结果类似,

$myVar = Get-Content -Path "C:\Coding\Solution.xml"


$myVar.ImportExportXml.SolutionManifest.Version不会返回任何数据。

wn9m85ua

wn9m85ua1#

它在node属性下:

$myvar = Select-Xml -XPath //Version -Path solution.xml 
$myvar.node.'#text'

1.0.0.0

字符串

shyt4zoc

shyt4zoc2#

使用XmlDocumentSelectSingleNode,你可以得到Version的值:

($xml = [xml]::new()).Load('C:\Coding\Solution.xml')
$xml.SelectSingleNode('/ImportExportXml/SolutionManifest').Version

字符串
使用Select-Xml,您可以使用以下命令获得它:

Select-Xml -Path C:\Coding\Solution.xml -XPath /ImportExportXml/SolutionManifest |
    ForEach-Object { $_.Node.Version }

gzjq41n4

gzjq41n43#

另一种方法使用//在Linux中:

(Select-XMl -Path 'C:\Coding\Solution.xml' -Xpath '//SolutionManifest' | Select-Object -EXpandProperty Node ).Version

字符串
或者,当你需要语言代码时,

(Select-XMl -Path 'C:\Coding\Solution.xml' -Xpath '//LocalizedNames' | Select-Object -EXpandProperty Node ).LocalizedName.languagecode

相关问题