Powershell 5.1:无法使用 Get-Unique 对提取的 XML 属性名称进行排序
Powershell 5.1: unable to sort extracted XML attribute names with Get-Unique
我正在尝试从以下示例文件中提取存储在 <input>
元素的属性 className
中的所有唯一值:
<?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 次。
我试图提取 className
个值并只显示一个唯一的值:
[xml]$file = get-content C:\ps_scripts\configs\test.xml
$xmlProperties = $file.SelectNodes("//input")
Foreach ($xmlProperty in $xmlProperties) {
Echo $xmlProperty.className | Get-Unique
}
但是,当我 运行 脚本时,我得到相同的 className 值打印了 3 次而不是预期的 1 次:
PS C:\ps_scripts> .\xml2.ps1
com.ib.feed.csv.TarCsvFileInput
com.ib.feed.csv.TarCsvFileInput
com.ib.feed.csv.TarCsvFileInput
在这种情况下如何正确显示唯一的 className
值?
脚本的最终目的是遍历多个 XML 文件并提取 <input>
元素内的所有唯一 className
值(我不知道 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
我正在尝试从以下示例文件中提取存储在 <input>
元素的属性 className
中的所有唯一值:
<?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 次。
我试图提取 className
个值并只显示一个唯一的值:
[xml]$file = get-content C:\ps_scripts\configs\test.xml
$xmlProperties = $file.SelectNodes("//input")
Foreach ($xmlProperty in $xmlProperties) {
Echo $xmlProperty.className | Get-Unique
}
但是,当我 运行 脚本时,我得到相同的 className 值打印了 3 次而不是预期的 1 次:
PS C:\ps_scripts> .\xml2.ps1
com.ib.feed.csv.TarCsvFileInput
com.ib.feed.csv.TarCsvFileInput
com.ib.feed.csv.TarCsvFileInput
在这种情况下如何正确显示唯一的 className
值?
脚本的最终目的是遍历多个 XML 文件并提取 <input>
元素内的所有唯一 className
值(我不知道 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