2017-10-12 11 views
0

PowerShellでrssフィード(XML)を解析する方法を探しています。XMLを解析し、不要な文字列を削除してtxtに書き込む

<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 
RSS(短縮)は、のように見えます

しかし、私は "URL:"の後のリンクに興味があります。 url1.com/filename。 「URL」の先頭から「description」フィールドの最初のカンマの後にすべてを削除してください。さらに、すべてのURLの前に「http://」を追加したいと思います。

+3

'-replace '^ URL :(。*?)、。*'、 'http: // $ 1'' –

答えて

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" 
0

次の行を試してください。 「URL:」を「URL:http://」に置き換えます。

$ rssFeed.rss.channel.item | Select-Object @ {Name = "title";式= {$ _。description - "URL:"、 "URL:http://"}}} - 最初5

関連する問題