私は、C#のWindowsフォームアプリケーションを使用して、クラスまたはIDの名前に基づいてHTMLソースから要素を取得しようとしています。私はWebClientを使用して文字列にソースを置き、HtmlDocumentを使用してHTMLAgilityPackにプラグインしています。
しかし、HTMLAgilityPackパックで見つけたすべての例は、タグを基にしてパースして項目を検索します。私は特定のID、例えばhtmlのリンクを見つけ、タグの中の値を取得する必要があります。これは可能なのですか?これを行う最も効率的な方法は何でしょうか?私がIDを解析しようとしているすべてが私に例外を与えています。ありがとう!
XPathでこれを行うことができるはずです:
HtmlDocument doc = new HtmlDocument();
doc.Load(@"file.htm");
HtmlNode node = doc.DocumentNode.SelectSingleNode("//*[@id=\"my_control_id\"]");
string value = (node == null) ? "Error, id not found" : node.InnerHtml;
ここでのxpathの簡単な説明:
//
パス内のすべての場所を検索することを意味します。一致する倍数になる場合はSelectNodes
使用します。 *
は、任意のタイプのノードと一致することを意味します[]
基本的にこのノードに関連するプロパティをチェックする「述語」を定義する[@id=\"my_control_id\"]
は、 "my_control_id"という値を持つ "id"という名前の属性を持つノードを見つけることを意味します。