我想从配置文件中读取XML节点的文本。为此,我使用Xpath读取值。其中一个配置值是在它的conetents之间有空间,所以当我读它时它只是将值返回到空白区域。 我的配置文件名和内容如下 config.xml中
<?xml version="1.0" encoding="UTF-8"?>
<OpsConfig>
<Tenant>mytenant_az1</Tenant>
<Client>XYZ</Client>
<ReviewID>a123456</ReviewID>
<ReferenceID>ARTL_Is Correction_Rewind_Report</ReferenceID>
<OpsConfig>
我已成功读取标记值 ReferenceID 。 以下是代码:
$configFile = "config.xml"
[xml]$confXml = Get-Content $configFile
$refIds = $confXml | Select-XML -XPath "//OpsConfig/ReferenceID"
Write-Host $refIds
变量$ refIds只返回&#34; ARTL_Is&#34;。它在空间之后跳过内容。我尝试通过附加空间的六进制值但仍然没有返回整个值&#34; ARTL_Is Correction_Rewind_Report&#34;。
答案 0 :(得分:0)
您面临的问题是因为似乎缺少闭包标签。我不知道这是不是一个错字。但是当我把它保留在那里并尝试将内容读作XML解析时,我能够检索它。
你可以试试这个:
<OpsConfig>
<Tenant>mytenant_az1</Tenant>
<Client>XYZ</Client>
<ReviewID>a123456</ReviewID>
<ReferenceID>ARTL_Is Correction_Rewind_Report</ReferenceID>
</OpsConfig>
我在PS版本4只是FYI。请检查PS版本
答案 1 :(得分:0)
由于您已经在使用Get-Content,因此您可以调用该变量来获取其节点。
p
如果您的问题是多个参考ID,则可以使用[Xml]$ConfXml = Get-Content ".\config.xml"
$RefIds = $ConfXml.OpsConfig.ReferenceID
Write "$RefIds"
ForEach
可替换地,
ForEach ($i in $ConfXml.OpsConfig.ReferenceID) { Do stuff with $i }
使用此方法,变量中的xml属性只是一个字符串,不应该关心空格。