質問: doc.DocumentNode.SelectNodes("//img[@src]"); ``` しかし、これはまた、 ``` ``` 私の知る限りでは、少なくとも私には思われます。imgタグが検索され、srcはimgタグのすぐ隣にある必要はなく、同じレベルにある必要があります。 ドキュメンテーションを見た後、私はこの機能で許可されていないことをしようとしています。 誰かがこれを行う正しい方法を提案してもらえますか?ありがとう!
回答: > *msgstr* "" " *imgタグが検索され、 **src**は同じレベルにある必要があります。必ずしも**imgタグのすぐ隣に**ある必要はありません。* " > > `src`属性が最初の属性である``要素を探したいと思うようです。 XML / HTMLパーサーは属性の順序を保持する必要はないので、通常は特定の属性の順序、つまり`src`属性が最初に来る場所などに基づいて要素を選択したくないことに注意してください。 とにかく、私の過度に単純化されたテストでは、HAPによって属性の順序が保持されるため、 `Attributes[0].Name` *を使用して、働いた最初の属性の名前を確認します。 ``` var raw = @" "; var doc = new HtmlDocument(); doc.LoadHtml(raw); var result = doc.DocumentNode .SelectNodes("//img[@src]") .Where(o => o.Attributes[0].Name == "src") .ToList(); foreach (var item in result) { Console.WriteLine(item.OuterHtml); } ``` **出力:** ``` ``` *)XPathはすでに属性`src`を持つ`img`要素をフィルタリングします。そのため、 `Attributes[0].Name`はNREを生成しません。