Powershell - как вы разбираете содержимое: закодировано из RSS-канала (XML)?


3 принят

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

$rss = [xml](Get-Content .	est.rss)
$rss.SelectNodes('//item') | % {
    $posts += New-Object psobject -Property @{
        Title = $_.Title.Trim()
        Guid = $_.Guid.Trim()
        Content = $_.Encoded."#cdata-section".Trim()
    }
}

Пример анализируемых данных (массив содержит только один элемент, поскольку в вашем примере только один):

$posts

Title                             Guid                             Content                         
-----                             ----                             -------                         
MS13-045 - Important : Vulnera... http://technet.microsoft.com/... Severity Rating: Important<br...

Кстати, у вашего образца в конце не было следующего:

</channel>
</rss>

0

Вы можете обойти запись вывода в промежуточный файл, пропуская get-content . Frode's пакеты он хорошо в psobject, который предоставил решение.

cls
$x=[xml](iwr 'https://technet.microsoft.com/en-us/security/rss/comprehensive').content
foreach ($y in $x.rss.channel.selectnodes('//item')) {
"`r`n`t$($y.title)"

$y.pubdate
$y.link
$y.encoded.'#cdata-section'

}

Вы можете обнаружить, что ваш rss / atom возвращает немного другую структуру, и я нашел это необходимым для другого фида:

foreach ($y in $x.feed.entry)

Intellisense в IDE помог мне в навигации.

XML, PowerShell, Новости,

xml,powershell,rss,

0

Ответов: 2


3 принят

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

$rss = [xml](Get-Content .	est.rss)
$rss.SelectNodes('//item') | % {
    $posts += New-Object psobject -Property @{
        Title = $_.Title.Trim()
        Guid = $_.Guid.Trim()
        Content = $_.Encoded."#cdata-section".Trim()
    }
}

Пример анализируемых данных (массив содержит только один элемент, поскольку в вашем примере только один):

$posts

Title                             Guid                             Content                         
-----                             ----                             -------                         
MS13-045 - Important : Vulnera... http://technet.microsoft.com/... Severity Rating: Important<br...

Кстати, у вашего образца в конце не было следующего:

</channel>
</rss>

0

Вы можете обойти запись вывода в промежуточный файл, пропуская get-content . Frode's пакеты он хорошо в psobject, который предоставил решение.

cls
$x=[xml](iwr 'https://technet.microsoft.com/en-us/security/rss/comprehensive').content
foreach ($y in $x.rss.channel.selectnodes('//item')) {
"`r`n`t$($y.title)"

$y.pubdate
$y.link
$y.encoded.'#cdata-section'

}

Вы можете обнаружить, что ваш rss / atom возвращает немного другую структуру, и я нашел это необходимым для другого фида:

foreach ($y in $x.feed.entry)

Intellisense в IDE помог мне в навигации.

XML, PowerShell, Новости,
Похожие вопросы