简体   繁体   English

在Powershell中解析XML文件

[英]Parse XML file in Powershell

I am trying to retrieve Exchange Rates from Yahoo 我正在尝试从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

But I am unable to get the data as required, I only get: 但是我无法获得所需的数据,只能得到:

Name     price
----     -----
resource      
resource      
resource      
resource      
resource      
.
.
..

Try this: 尝试这个:

$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 

Thing is when you are getting $xml.list.resources.resource it comes as System.Array so you need to deal with every object separately. 问题是当您获得$ xml.list.resources.resource时,它作为System.Array出现,因此您需要分别处理每个对象。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM