我使用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>
答案 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