この HTML マークアップを含む文字列があります。
string markup = @"
<html>
<head>
...
</head>
<body>
<input id='text1' />
<input id='blah' />
<input id='text1' />
</body>
</html>
";
重複する ID 名を確認するにはどうすればよいですか?
この HTML マークアップを含む文字列があります。
string markup = @"
<html>
<head>
...
</head>
<body>
<input id='text1' />
<input id='blah' />
<input id='text1' />
</body>
</html>
";
重複する ID 名を確認するにはどうすればよいですか?
HtmlAgilityPackの助けを借りて
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(markup);
var dups = doc.DocumentNode.Descendants()
.Where(n => n.Attributes["id"] != null)
.GroupBy(n => n.Attributes["id"].Value)
.Select(g => new { ID = g.Key, Count = g.Count() })
.Where(r=>r.Count>1)
.ToList();
正規表現は機能する可能性がありますが、HTML が非常に規則的である場合に限られます。たとえば、これらのタグの属性の数、タイプ、フォーマット、および順序がわからない場合、必要なinput
情報を取得するための正規表現ベースのソリューションは、せいぜい扱いにくく、おそらく機能しません。
HTML Agility Packを使用することをお勧めします。HTML を解析して、ドキュメント構造を表すツリーを吐き出します。次に、タグを探してトラバースし、タグがある場合はそれらinput
を取得できます。id
HtmlDocument doc;
var inputTags = doc.DocumentNode.Descendants("input");
var ids = inputTags.Select(x=>x.Attributes["id"]);