如果我想在Ruby中使用Nokogiri解析HTML块:
<th class="first">ancd</th>
<th>xyz</th>
<th>sdf</th>
如何排除包含某个类名的标记?在这种情况下的“第一”。
答案 0 :(得分:7)
您可以使用CSS选择器:
doc.css('th:not(.first)')
在这个简单的例子中,您还可以使用xpath:
doc.xpath('//th[not(@class="first")]')
不同之处在于xpath需要在类名中完全匹配。如果你有可能有多个班级,例如<th class="red first">
然后CSS选择器会识别它,但xpath不会(不会让它变得有点复杂)。
编辑:仅供参考,如果你想要一个可以在元素上有多个类时选择一个类的xpath:
doc.xpath('//th[@class and contains(concat(" ",normalize-space(@class)," "), " first ")]')
通常XPath比CSS选择器更灵活,但这是一个支持CSS的HTML边缘情况。