Разбор PowerShell раздела cdata - PullRequest
4 голосов
/ 29 ноября 2011

Я пытаюсь прочитать RSS-канал с помощью PowerShell, и я не могу извлечь раздел cdata внутри канала

Вот фрагмент фида (с сокращением нескольких элементов для экономии места):

<item rdf:about="http://philadelphia.craigslist.org/ctd/blahblah.html">
<title>
<![CDATA[2006 BMW 650I,BLACK/BLACK/SPORT/AUTO ]]>
</title>
...
<dc:title>
<![CDATA[2006 BMW 650I,BLACK/BLACK/SPORT/AUTO ]]>
</dc:title>
<dc:type>text</dc:type>
<dcterms:issued>2011-11-28T22:15:55-05:00</dcterms:issued>
</item>

И скрипт Powershell:

$rssFeed = [xml](New-Object System.Net.WebClient).DownloadString('http://philadelphia.craigslist.org/sss/index.rss')
foreach ($item in $rssFeed.rdf.item) { $item.title } 

Который производит это:

#cdata-section
--------------
2006 BMW 650I,BLACK/BLACK/SPORT/AUTO 
2006 BMW 650I,BLACK/BLACK/SPORT/AUTO 

Как извлечь раздел cdata?

Я попробовал несколько вариантов, таких как $ item.title. "# Cdata-section" и $ item.title.InnerText, которые ничего не возвращают. Я попробовал $ item.title | gm и я вижу # cdata-section в списке как свойство. Чего мне не хватает?

Спасибо.

1 Ответ

5 голосов
/ 29 ноября 2011

Поскольку у вас их несколько, свойство title само по себе будет массивом, поэтому должно работать следующее:

$rss.item.title | select -expand "#cdata-section"

или

$rss.item.title[0]."#cdata-section"

в зависимости от того, что вам нужно.

...