質問: 私は、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」という名前の属性を持つノードを検索することを意味します さらに参照