Как выбрать идентификаторы с помощью xpath в Nokogiri? - PullRequest
1 голос
/ 12 мая 2011

Используя этот код:

doc = Nokogiri::HTML(open("text.html"))
doc.xpath("//span[@id='startsWith_']").remove

Я хотел бы выбрать каждый span#id, начинающийся с 'startsWith_', и удалить его.Я пытался искать, но не получилось.

Ответы [ 2 ]

1 голос
/ 14 мая 2011

Вот пример:

require 'nokogiri'

html = '
<html>
<body>
  <span id="doesnt_start_with">foo</span>
  <span id="startsWith_bar">bar</span>
</body>
</html>'

doc = Nokogiri::HTML(html)
p doc.search('//span[starts-with(@id, "startsWith_")]').to_xml

Вот как их выбрать.

doc.search('//span[starts-with(@id, "startsWith_")]').each do |n|
  n.remove
end

Вот как их удалить.

p doc.to_xml
# >> "<span id=\"startsWith_bar\">bar</span>"
# >> "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/REC-html40/loose.dtd\">\n<html><body>\n  <span id=\"doesnt_start_with\">foo</span>\n  \n</body></html>\n"

На странице " Функции XPath, XQuery и XSLT " содержится список доступных функций.

0 голосов
/ 12 мая 2011

Попробуйте это выражение xpath:

//span[starts-with(@id, 'startsWith_')]
...