Powershell匹配多个字段,包括编码

时间:2012-01-12 16:26:59

标签: xml powershell rss

Google一直是我的朋友,我在我正在处理的代码方面取得了一些进展。但我不是一个贸易程序员,所以我到目前为止,现在我被卡住了。

我有一个rss feed,我正在尝试解析并搜索关键字。一旦找到其中一个关键字,我希望它能够选择标题,链接和正文。理想情况下,易于阅读的段落格式。

$feed = [xml](New-Object System.Net.WebClient).DownloadString('http://www.bladeforums.com/forums/external.php?type=RSS2&forumids=746')
$results = $feed.rss.channel.Item | ? {$_.title  -match "boker"} | ft title, link, description -auto
@($results)

这是我到目前为止所获得的代码。就像信息一样,描述字段不是我真正想要的。我真的想要编码字段,但它不能正确导出。它只是在完成时说“编码”。

我希望它做的另一件事。我希望它不仅可以搜索标题,还可以搜索相同内容的编码字段。如果它在任何一个地方找到关键字,那么它会提取信息。

今天它将如何输出:

title                               link                                                                                                    description                    
-----                               ----                                                                                                    -----------                    
FS: CRKT Shrimp, Boker Microcom     http://www.bladeforums.com/forums/showthread.php/915409-FS-CRKT-Shrimp-Boker-Microcom?goto=newpost      1st Class shipping is includ...
SOLD: Boker Subcom and Subcom Titan http://www.bladeforums.com/forums/showthread.php/915337-SOLD-Boker-Subcom-and-Subcom-Titan?goto=newpost description                    

我更愿意输出:

title
link
encoded

title
link 
encoded

如果您需要更多信息,请告诉我。一旦我按照我想要的方式进行格式化,我计划在循环中将其作为计划任务运行,并在有匹配时随时给我发电子邮件。并保持历史,以便它不发送重复。但首先,我想首先获得基本输出。

修改

谢谢你们俩。我得到了它,正是我所要求的。当我将电子邮件发送到手机时,如果我包含cdata / encoded字段,则会占用太多空间。说明字段可能会在我的手机上更好地工作。然而它似乎很受欢迎。有时会填充描述字段,有时它将为空白。有任何想法吗?标题字段也是如此,有时它是空白的。

2 个答案:

答案 0 :(得分:2)

编码属性中的数据包含在另一个名为“#cdata-section”的属性中,因此您也必须对其进行扩展。

要匹配这两个属性,只需在-or运算符分隔的where条件中包含两个匹配项。你的情况如下:

?{ $_ -match "boker" -or $_.encoded."#cdata-section" -match "boker"}

最后,要输出为列表,请使用format-list命令行开关(别名fl),注意如何通过提供脚本块(括在大括号中)来扩展编码属性。所以你最终得到了这个:

$feed.rss.channel.Item | ?{ $_ -match "boker" -or $_.encoded."#cdata-section" -match "boker"} | fl title, link, {$_.encoded."#cdata-section"}

答案 1 :(得分:0)

使用Format-List代替Format-Table,例如:

$feed.rss.channel.Item | Where {$_.title  -match "boker"} | Format-List title, link, description

$feed.rss.channel.Item | ? {$_.title  -match "boker"} | fl title, link, description

哪个输出:

title       : FS: CRKT Shrimp, Boker Microcom
link        : http://www.bladeforums.com/forums/showthread.php/915409-FS-CRKT-Shrimp-Boker-Microcom?goto=newpost
description : 1st Class shipping is included, I take both PP personal and MO.

              1. CRKT Shrimp Silver: NIB. Good lockup, only thing that has been done is the little steel ring has been
              removed (but I still have it). $*11*

              2. Boker Microcom: Taken in and out of the sheath a few times, used a few times as...

title       : SOLD: Boker Subcom and Subcom Titan
link        : http://www.bladeforums.com/forums/showthread.php/915337-SOLD-Boker-Subcom-and-Subcom-Titan?goto=newpost
description : description