我正在寻找一种在PowerShell中解析特定字符串的rss feed(XML)的方法。 RSS(缩写)看起来像:
<channel>
<title>title here</title>
<link>http://link.com</link>
<description>this is a description</description>
<language>en-us</language>
<item>
<title>title1</title>
<description>URL: url1.com/filenamehere, IP Address: 123.123.123.123.123.123, Country: AA</description>
</item>
<item>
<title>title2</title>
<description>URL: url2.com/filenamehere, IP Address: 123.123.123.123.123.123, Country: AA</description>
</item>
<item>
<title>title3</title>
<description>URL: url2.com/filenamehere, IP Address: 123.123.123.123.123.123, Country: AA</description>
</item>
我正在下载RSS并且我能够为我解析有趣的“描述”字段:
$rssFeed = [xml](New-Object System.Net.WebClient).DownloadString('http:/url2feed.com/rss/')
$rssFeed.rss.channel.item | Select-Object description -First 5
输出是:
URL: url1.com/filenamehere, IP Address: 123.123.123.123.123.123, Country: AA URL: url2.com/filenamehere, IP Address: 123.123.123.123.123.123, Country: AA URL: url3.com/filenamehere, IP Address: 123.123.123.123.123.123, Country: AA
但我只对“网址:”之后的链接感兴趣,例如url1.com/filename。 那么,我可以请求您的帮助,请在“描述”字段中的第一个逗号之后删除开头的“URL:”和所有内容吗?此外,我想在每个网址之前添加“http://”。
答案 0 :(得分:1)
这个案例相对简单但我会在这里发布一个解决方案,作为更复杂案例的想法。
我们假设你想要使用你的一条线。
$line="URL: url3.com/filenamehere, IP Address: 123.123.123.123.123.123, Country: AA"
此行有多个分隔符,并附加空格。但是因为它的结构相对较好,所以你可以通过在每个分隔符的段中分解它来轻松地提取所需的信息而无需正则表达式。
例如,这会返回网址值
$url=(($line -split ", ")[0] -split ": ")[1]
如果存在空格不是规范的情况,那么您可以将责任推出分隔符并进入修剪函数。喜欢这个
$url=(($line -split ",")[0].Trim() -split ":")[1].Trim()
在任何一种情况下,$url
都将是
url3.com/filenamehere
你可以随意使用它,例如
$url="http://$url"
答案 1 :(得分:0)
尝试以下行。将“URL:”替换为“URL:http://”
$ rssFeed.rss.channel.item | Select-Object @ {Name =“title”; Expression = {$ _。description -replace“URL:”,“URL:http://”}} - 第5页