Nokogiri несколько классов css

Как можно выбрать элемент html, который имеет два класса?

Например, как выбрать элемент <p> ниже в HTML-документе (учитывая, что он имеет два класса 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 ')]")

но без успеха.

Заранее спасибо

Ответ 1

Наконец, я нашел ПРАВИЛЬНЫЙ способ поиска нескольких классов css с помощью nokogiri (libxml):

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

Это не идеально, потому что если <p> содержит классы, такие как class10 и class20, элемент будет выбран, но на данный момент он достаточно для того, что мне нужно. Если у вас есть больше предложений, мы будем рады!

Update

Вот лучшее решение этой проблемы, используя только css:

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

Спасибо Аарону Паттерсону: -)