簡體   English   中英

如何使用Powershell讀取帶空格的xml節點文本

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM