无法在xml文档的变量中保存SelectNode的值

时间:2016-11-23 11:02:21

标签: xml powershell

我使用来解析我创建的XML文档的数据,到目前为止一切都是这样的:

$xdoc.SelectNodes("//key")[0]
$xdoc.SelectNodes("//value")[0]
$xdoc.SelectNodes("//key")[1]
$xdoc.SelectNodes("//value")[1]
$xdoc.SelectNodes("//key")[2]
$xdoc.SelectNodes("//value")[2]

所有这些工作正常,但我想将值解析为这样的变量:

$a1 = $xdoc.SelectNodes("//key")[0]
$a2 = $xdoc.SelectNodes("//value")[0]
$b1 = $xdoc.SelectNodes("//key")[1]
$b2 = $xdoc.SelectNodes("//value")[1]
$c1 = $xdoc.SelectNodes("//key")[2]
$c2 = $xdoc.SelectNodes("//value")[2]

然后,如果我尝试Write-Host $a1它将不显示该值,我怎样才能让变量保持该值。我尝试使用SelectSingleNode但得到了相同的结果。我尝试使用.InnerText.InnerHtml,。值,所有这些都会在不使用$变量的情况下正确显示,因此如何将信息保存在变量中。

我的xml看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<configuration xml:space="preserve">
<triggers>
<defined>true</defined>
<triggerDefinition>
<id>1</id>
<name>After successful build plan</name>
<userDescription>Auto release</userDescription>
<isEnabled>true</isEnabled>
<pluginKey>com.atlassian.bamboo.triggers.atlassian-bamboo-triggers:afterSuccessfulPlan</pluginKey>
<triggeringRepositories/>
<config>
<item>
<key>deployment.trigger.afterSuccessfulPlan.triggeringBranch</key>
<value>INT-LOAN</value>
</item>
<item>
<key>deployment.trigger.afterSuccessfulPlan.triggeringPlan</key>
<value>INT-LOAN</value>
</item>
<item>
<key>deployment.trigger.afterSuccessfulPlan.branchSelectionMode</key>
<value>INHERITED</value>
</item>
</config>
</triggerDefinition>
</triggers>
<bambooDelimiterParsingDisabled>true</bambooDelimiterParsingDisabled>
</configuration>

1 个答案:

答案 0 :(得分:1)

您必须为所选节点选择的子节点/属性。例如,如果要使用Id输出Write-Host属性值:

Write-Host $a1.Id

修改

我复制了您的XML,调用了这个实际输出deployment.trigger.afterSuccessfulPlan.triggeringBranch

[xml]$xdoc = Get-Content 'your_xml_path'
$a1 = $xdoc.SelectNodes("//key")[0]
Write-Host $a1.InnerText