У меня есть документ A , и я хочу создать новый B , используя значения узлов A .
Учитывая A выглядит так ...
<html>
<head></head>
<body>
<div id="section0">
<h1>Section 0</h1>
<div>
<p>Some <b>important</b> info here</p>
<div>Some unimportant info here</p>
</div>
<div>
<div id="section1">
<h1>Section 1</h1>
<div>
<p>Some <i>important</i> info here</p>
<div>Some unimportant info here</div>
</div>
<div>
</body>
</html>
При создании документа B я использую метод a.at_css("#section#{n} h1").text
для получения данных из тегов A h1
, например:
require 'nokogiri'
a = Nokogiri::HTML(html)
Nokogiri::HTML::Builder.new do |doc|
...
doc.h1 a.at_css("#section#{n} h1").text
...
end
Итак, есть три вопроса:
Как получить содержимое тегов <p>
с сохранением тегов внутри
<p>
В настоящее время, как только я нажму a.at_css("#section#{n} p").text
это
возвращает простой текст, но это не то, что нужно.
Если вместо .text
я нажму .to_html
или .inner_html
, html будет отображаться как экранированный. Так я получаю, например, <p>
вместо <p>
.
Существует ли какой-либо известный верный способ назначения узлов на этапе построения документа? Чтобы я вообще не танцевала с методом text
? То есть как назначить doc.h1
узел со значением a.at_css("#section#{n} h1")
на этапе сборки?
Какая выгода от метода Nokogiri::Builder.with(...)
? Интересно, смогу ли я воспользоваться этим ...