如何解决Powershell 5.1:无法使用Get-Unique对提取的XML属性名称进行排序
我试图从以下示例文件中提取存储在className
元素的属性<input>
中的所有唯一值:
<?xml version="1.0" encoding="UTF-8"?>
<config>
<input name="reutersIn" className="com.ib.Feed.csv.TarCsvFileInput">
<uSEOutputMarketConfig>true</uSEOutputMarketConfig>
<optional>false</optional>
<archiveOnly>true</archiveOnly>
</input>
<input name="fidessaIn" className="com.ib.Feed.csv.TarCsvFileInput">
<uSEOutputMarketConfig>true</uSEOutputMarketConfig>
<optional>false</optional>
<archiveOnly>true</archiveOnly>
</input>
<input name="iceIn" className="com.ib.Feed.csv.TarCsvFileInput">
<uSEOutputMarketConfig>true</uSEOutputMarketConfig>
<optional>false</optional>
<archiveOnly>true</archiveOnly>
</input>
</config>
如上面的XML文件示例所示,具有相同值的className
属性出现3次。
[xml]$file = get-content C:\ps_scripts\configs\test.xml
$xmlProperties = $file.SelectNodes("//input")
Foreach ($xmlProperty in $xmlProperties) {
Echo $xmlProperty.className | Get-Unique
}
但是,当我运行脚本时,我得到了3次打印相同的className值,而不是预期的1次:
PS C:\ps_scripts> .\xml2.ps1
com.ib.Feed.csv.TarCsvFileInput
com.ib.Feed.csv.TarCsvFileInput
com.ib.Feed.csv.TarCsvFileInput
该脚本的最终目的是遍历多个XML文件并提取className
元素内的所有唯一<input>
值(我不知道存储在其中的className
值大多数文件)
解决方法
这很简单,只需更改
$xmlProperties = $file.SelectNodes("//input")
Foreach ($xmlProperty in $xmlProperties) {
Echo $xmlProperty.className | Get-Unique
}
到
$xmlProperties = $input.SelectNodes("//input") | Get-Unique
Foreach ($xmlProperty in $xmlProperties) {
echo $xmlProperty.className
}
输出:
com.ib.feed.csv.TarCsvFileInput
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。