我有以下小片段:
[xml]$doc = (New-Object System.Net.WebClient).DownloadString("https://www.jetbrains.com/updates/updates.xml")
$xPath = "//product[@name='IntelliJ IDEA']//channel[@id='IC-IU-RELEASE-licensing-RELEASE']//[1]"
$node = $doc | Select-XML -XPath $xPath
我們的想法是使用上述 xPath 獲取 IntelliJ 的最新構建版本。我對這條線感興趣
<build number="222.4345" version="2022.2.3" releaseDate="20220726" fullNumber="222.4345.14">
并想提取版本屬性。
使用上面的 xPath//product[@name='IntelliJ IDEA']//channel[@id='IC-IU-RELEASE-licensing-RELEASE']//[1]我得到了所有的構建。
切換到//product[@name='IntelliJ IDEA']//channel[@id='IC-IU-RELEASE-licensing-RELEASE']//build[1]我確實獲得了第一個構建,但沒有實際的構建節點,這將產生版本屬性。
如果我想簡單地迭代所有版本,$doc | Select-XML -XPath $xPath | ForEach-Object { $_.Node.version } 我會得到一個空的結果。我的錯誤一定是微不足道的,但我完全不知所措。
在這里獲取第一個構建節點的正確語法是什么?
uj5u.com熱心網友回復:
您只需要一個/來描述直接子節點,而不是//.
用于./build[1]獲取<build />給定父節點下的第一個節點是正確的,但如果您想確保選擇第一個具有version屬性的節點,請執行以下操作./build[@version][1]:
$firstVersion = $doc |Select-Xml -XPath "//product[@name='IntelliJ IDEA']/channel[@id='IC-IU-RELEASE-licensing-RELEASE']/build[@version][1]" |% Node |% Version
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/524879.html
標籤:xml电源外壳路径
