C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 17 を表示中)
■6473 / )  Re[4]: HtmlElementCollectionni
□投稿者/ らじゃ (3回)-(2007/08/15(Wed) 08:41:37)
2007/08/15(Wed) 09:05:22 編集(投稿者)
2007/08/15(Wed) 08:58:19 編集(投稿者)
2007/08/15(Wed) 08:58:05 編集(投稿者)

最終的に作りたかったのは

HtmlElementCollection x = GetsElementsByTagNameAndTag("<DIV class=hoge">);

のようなことをしたかったのです。現在は

HtmlElement[] x = GetsElementsByTagNameAndTag("<DIV class=hoge">);



どちらでも同じなんですが、HtmlElementCollectionにしたほうが、
・他のメソドの結果であるHtmlElementCollectionと統一できてソースが理解しやすいこと
・そしてその結果を、HtmlElementCollectionを引数としてもつ単一の関数に共通して渡すことができること
・HtmlElement[]とちがいHtmlElementCollectionであるほうが、各要素が同一documentに属することが自然に保障できること
という理由です。
絶対にないと困るわけではありません。


参考までに、つくった処理



static private HtmlElement[] GetsElementsByTagNameAndTag( HtmlElement hec, string tag )
{
List<HtmlElement> results = new List<HtmlElement>();
string key = "<(.+?) (.+?)=(.+?)>";
System.Text.RegularExpressions.Regex regex
= new System.Text.RegularExpressions.Regex( key, System.Text.RegularExpressions.RegexOptions.IgnoreCase );
System.Text.RegularExpressions.Match m = regex.Match( tag.ToLower() );
if( m.Success )
{
foreach( HtmlElement elm in hec.GetElementsByTagName( m.Groups[1].Value ) )
{
if( elm.GetAttribute( m.Groups[2].Value ) == m.Groups[3].Value
|| (m.Groups[2].Value == "class" && elm.GetAttribute( "className" ) == m.Groups[3].Value) )
{
results.Add( elm );
}
}
}
return results.ToArray();
}



返信 編集キー/


管理者用

- Child Tree -