2009-06-18 5 views
3

{0}、{1}、{2}という形式のアイテムのリストを含む文字列が文字列であり、基本的にそれらを抽出します。Cでのリンクのrelタイプとhrefの取得#

私はこれをhtml解析の問題の一部としてしたいと思います。正規表現でhtmlを解析するのが悪いと聞いています。 (Like here

正規表現でこれを行う方法についてもわかりません。

これは私の研究は、私は正規表現を使用して、間違ったトラックに完全にあるかもしれないことを上がって前に私は

string format = "<link rel=\".*\" type=\".*\" href=\".*\">"; 
Regex reg = new Regex(format); 
MatchCollection matches = reg.Matches(input, 0); 
foreach (Match match in matches) 
{ 
     string rel = string.Empty; 
     string type = string.Empty; 
     string href = string.Empty; 
     //not sure what to do here to get these values for each from the match 
} 

を得た限りです。

私が選んだ方法でも、HTMLパーサーでも、これをどうやってやりますか?

答えて

0

を見つけることができますHTMLの敏捷性パックライブラリを使用して、HTML構文解析します。あなたはそれを得ることができるhere

HTML解析で正規表現を使用しない主な理由は、正式な形式ではない可能性があります(ほとんどの場合そうです)。正規表現パーサーを壊す可能性があるからです。

次に、XPathを使用して必要なノードを取得し、変数にロードします。

HtmlDocument htmlDoc = new HtmlDocument(); 
htmlDoc.LoadHtml(pageMarkup); 
HtmlNodeCollection nodes = htmlDoc.DocumentNode.SelectNodes("//link"); 
string rel; 

if(nodes[0].Attributes["rel"] != null) 
{ 
    rel = nodes[0].Attributes["rel"]; 
} 
+0

あなたの答えが役に立つコードを持っていて、正規表現の代わりにパーサを使う理由を説明したので、私はあなたにチェックマークを与えています。 RonyにもHTML Agilityパックへのリンクがありましたので、ダウンロードしました。 –

1

あなたはあなたは、HTML敏捷性パックのような本当のHTMLパーサを使用したほうが良いと思いますhere

+0

ありがとうございました。おかげさまで –

関連する問題