どのようにC#でHTMLソース内のクラスまたはIDで要素を取得するには?

c# html html-agility-pack parsing

質問

私は、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"という名前の属性を持つノードを見つけることを意味します。

さらなる参照



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ