Разбор XML-файла в Powershell

Я пытаюсь получить обменный курс от Yahoo

$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

Но я не могу получить данные как требуется, я получаю только:

Название цены ----     ----- ресурсный ресурс ресурсный ресурс.,.
.

1 ответ

Решение

Попробуй это:

$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, поэтому вам нужно работать с каждым объектом отдельно.

Другие вопросы по тегам