[英]how to read an xml node text with spaces using powershell
我想從我的配置文件中讀取XML節點的文本。 為此,我使用Xpath讀取值。 配置值之一是它的切線之間有一個空格,所以當我閱讀它時,它只是將值返回到空白。 我的配置文件名和內容如下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”。
您面臨的問題是因為似乎缺少了閉包標記。 我不知道這是不是錯字。 但是,當我將其保留在那里並嘗試以XML解析的形式讀取內容時,我便能夠檢索它。
您可以嘗試一下:
<OpsConfig>
<Tenant>mytenant_az1</Tenant>
<Client>XYZ</Client>
<ReviewID>a123456</ReviewID>
<ReferenceID>ARTL_Is Correction_Rewind_Report</ReferenceID>
</OpsConfig>
我在PS版本4中只是供參考。 請同時檢查PS版本
由於您已經在使用Get-Content,因此只需調用變量即可獲取其節點。
[Xml]$ConfXml = Get-Content ".\config.xml"
$RefIds = $ConfXml.OpsConfig.ReferenceID
Write "$RefIds"
如果您關心的是多個參考ID,則可以使用ForEach
解析它們
ForEach ($i in $ConfXml.OpsConfig.ReferenceID) { Do stuff with $i }
或者,
ForEach ($i in $ConfXml.OpsConfig) { Do stuff with $i.ReferenceID }
使用這種方法,變量中的xml屬性只是一個字符串,不需要在乎空格。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.