如何对这个"元组"列表中的第二个节点对此xml进行排序。 ("整数"键入)使用Powershell。
所以结果是xml,但第一个元素是COMPUTERSF34,然后是COMPUTER123 ..
<Result>
<Tuple>
<Answer type="string">COMPUTERSF34</Answer>
<Answer type="integer">93</Answer>
</Tuple>
<Tuple>
<Answer type="string">NYCCOMPUTER01</Answer>
<Answer type="integer">44</Answer>
</Tuple>
<Tuple>
<Answer type="string">COMPUTER_05</Answer>
<Answer type="integer">45</Answer>
</Tuple>
<Tuple>
<Answer type="string">COMPUTER56</Answer>
<Answer type="integer">38</Answer>
</Tuple>
<Tuple>
<Answer type="string">COMPUTER123</Answer>
<Answer type="integer">51</Answer>
</Tuple>
...
</Result>
答案 0 :(得分:3)
试试这个:
$xml = [xml]@'
<Result>
<Tuple>
<Answer type="string">COMPUTERSF34</Answer>
<Answer type="integer">93</Answer>
</Tuple>
<Tuple>
<Answer type="string">NYCCOMPUTER01</Answer>
<Answer type="integer">44</Answer>
</Tuple>
<Tuple>
<Answer type="string">COMPUTER_05</Answer>
<Answer type="integer">45</Answer>
</Tuple>
<Tuple>
<Answer type="string">COMPUTER56</Answer>
<Answer type="integer">38</Answer>
</Tuple>
<Tuple>
<Answer type="string">COMPUTER123</Answer>
<Answer type="integer">51</Answer>
</Tuple>
</Result>
'@
$sorted = $xml.Result.Tuple | sort {[int]$_.Answer[1].'#text'} -desc
$lastChild = $sorted[-1]
$sorted[0..($sorted.Length-2)] | Foreach {$xml.Result.InsertBefore($_,$lastChild)}
$xml.Save('c:\foo.xml')
诀窍是获取每个排序的节点(除了最后一个)并在新的(后排序)最后一个节点之前插入它。