【问题标题】:Parse XML and remove some not needed strings and write to txt解析 XML 并删除一些不需要的字符串并写入 txt
【发布时间】:2018-03-24 10:39:08
【问题描述】:

我正在寻找一种在 PowerShell 中为特定字符串解析 rss 提要 (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地址:123.123.123.123.123.123,国家:AA URL:url2.com/filenamehere,IP地址:123.123.123.123.123.123,国家:AA URL:url3.com/filenamehere,IP地址:123.123.123.123.123.123,国家:AA

但我只对“URL:”之后的链接感兴趣,例如url1.com/文件名。 那么,我可以请求您的帮助,请退出开头的“URL:”以及“描述”字段中第一个逗号之后的所有内容吗?此外,我想在每个 URL 之前添加“http://”。

【问题讨论】:

  • -replace '^URL: (.*?),.*', 'http://$1'

标签: xml powershell parsing rss


【解决方案1】:

这个案例比较简单,但我会在这里发布一个解决方案,作为更复杂案例的想法。

假设您想使用其中一条线。

$line="URL: url3.com/filenamehere, IP Address: 123.123.123.123.123.123, Country: AA"

此行有多个带有空格的分隔符。但是由于它的结构相对较好,您可以轻松提取所需的信息,而无需正则表达式,只需按分隔符将其分成段即可。

例如返回url值

$url=(($line -split ", ")[0] -split ": ")[1]

如果存在空格不规范的情况,那么您可以将责任从分隔符中推到修剪函数中。像这样

$url=(($line -split ",")[0].Trim() -split ":")[1].Trim()

在任何一种情况下,$url 都将是

url3.com/filenamehere

您可以随意使用它,例如

$url="http://$url"

【讨论】:

    【解决方案2】:

    试试下面的行。将“URL:”替换为“URL:http://”

    $rssFeed.rss.channel.item |选择对象@{Name = "title";表达式 = {$_.description -replace "URL: ","URL: http://"}} -First 5

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多