0

我正在尝试从雅虎检索汇率

$browser = New-Object System.Net.WebClient
$browser.Proxy.Credentials =[System.Net.CredentialCache]::DefaultNetworkCredentials 

$url = 'http://finance.yahoo.com/webservice/v1/symbols/allcurrencies/quote'
$xml = New-Object xml
$xml.Load($url)

[xml]$YahooDataDocument = $xml.InnerXml
$YahooDataDocument.List.resources.resource | format-table name,price

但我无法按要求获取数据,我只得到:

名称 价格
---- -----
资源      
资源      
资源      
资源      
资源      
.
.
..
4

1 回答 1

3

尝试这个:

$browser = New-Object System.Net.WebClient
$browser.Proxy.Credentials =[System.Net.CredentialCache]::DefaultNetworkCredentials 
$url = 'http://finance.yahoo.com/webservice/v1/symbols/allcurrencies/quote'
[xml]$xml = $browser.DownloadString($url)

$resultset = New-Object System.Collections.ArrayList
foreach ($quote in $xml.list.resources.resource){
    $singlequote = New-Object System.Collections.Specialized.OrderedDictionary
    foreach($element in $quote.field){
        $singlequote.Add($element.name,$element.'#text')
    }
    $resultset += New-Object PSObject -Property $singlequote
}
$resultset | format-table 

问题是当您获得$xml.list.resources.resource时,它​​以System.Array的形式出现,因此您需要分别处理每个对象。

于 2017-10-11T10:54:38.050 回答