13

2 つのクラスを持つ html 要素を選択するにはどうすればよいですか?

たとえば<p>、HTML ドキュメントで次の要素を選択する方法 (2 つの css クラスがある場合) class='class1 class2'

私は以下を使用しようとしました:

  • doc.xpath("//p[@class~='class1 class2']")
  • doc.xpath("//p[@class~='class1']|[@class~='class2']")
  • doc.xpath("//p[@class~='class1',@class~='class2']")
  • doc.xpath("//p[contains(concat(' ', @class, ' '), ' class1 ') && contains(concat(' ',@class, ' '), ' class2 ')]")

しかし、成功しませんでした。

前もって感謝します

4

1 に答える 1

27

最後に、nokogiri (libxml) を使用して複数の css クラスを検索する正しい方法を見つけました。

doc.xpath('//p[contains(@class, "class1") and contains(@class, "class2")]')

などの<p>クラスが含まれている場合は要素が選択されるため、完全ではありませんが、今のところ、必要なものには十分です。さらに提案があれば、大歓迎です!class10class20

アップデート

css のみを使用したこの問題のより良い解決策を次に示します。

doc.css('p.class1.class2')

アーロン・パターソンに感謝 :-)

于 2009-11-19T18:15:54.550 に答える