#ruby-on-rails #nokogiri
#ruby-on-rails #nokogiri
Вопрос:
У меня есть такой контент:
<div>other code here</div>
Я хочу получить caption
из него все элементы, поэтому я пытаюсь сделать что-то вроде этого:
doc.css("")
и doc.xpath('.//[caption]')
но не имел успеха.
Комментарии:
1. XML и HTML не используются
[]
для элементов, они используют<>
. Если ваш файл выглядит именно так, вам нужно будет использовать что-то другое, кроме синтаксического анализатора XML, для извлечения нужных данных.2. это сообщение в блоге, экспортированное из WordPress, поэтому в данном случае заголовок — это элемент WordPress, остальное — стандартный html-код
3.В приведенном вами примере нет
caption
элементов (в смысле XML или HTML), есть только текст, который говоритcaption
внутри некоторых квадратных скобок. Вам нужно будет найти какой-то другой способ его анализа и извлечения необходимых вам данных.4. получил его, преобразовал его с помощью gsub в тег <caption>
5. Для вашего будущего «я»:
'.//[caption]'
не очень хороший селектор для использования.//
означает начало в верхней части DOM, с которым конфликтует.
. Либо./
или//
было бы более разумным.
Ответ №1:
Попробуйте doc.css("[caption]").attr("caption")
Комментарии:
1. doc.css(«[caption]«) — это пустой массив, а заголовок не является атрибутом, это что-то вроде тега
Ответ №2:
Я преобразовал [caption]
в <caption>
тег. В моем случае это было:
text.gsub!("[caption", "<caption").gsub!('"]', '">').gsub!("", "</caption>")
после этого я смог получить <caption.
тег с помощью Nokogiri.