我想从我的配置文件中读取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只返回"ARTL_Is“。它跳过了空格后的内容。我试图添加空间的十六进制值,但仍然没有返回整个值"ARTL_Is Correction_Rewind_Report“。
发布于 2017-06-19 14:30:48
您所面临的问题是因为闭包标签似乎缺失了。我不知道这是不是一个错误。但是,当我将它保存在那里并试图将内容作为XML解析来读取时,我就能够检索它。
你能试试这个吗?
<OpsConfig>
<Tenant>mytenant_az1</Tenant>
<Client>XYZ</Client>
<ReviewID>a123456</ReviewID>
<ReferenceID>ARTL_Is Correction_Rewind_Report</ReferenceID>
</OpsConfig>我在PS第4版只是FYI。也请查看PS版本。
发布于 2017-06-20 16:51:43
因为您已经在使用Get-Content,所以只需调用变量来获取它的节点。
[Xml]$ConfXml = Get-Content ".\config.xml"
$RefIds = $ConfXml.OpsConfig.ReferenceID
Write "$RefIds"如果您的关注点是多个引用is,则可以使用ForEach解析它们。
ForEach ($i in $ConfXml.OpsConfig.ReferenceID) { Do stuff with $i }或者,
ForEach ($i in $ConfXml.OpsConfig) { Do stuff with $i.ReferenceID }使用此方法,变量中的xml属性只是一个字符串,不应该关心空格。
https://stackoverflow.com/questions/44631528
复制相似问题