【问题标题】:How do I wrap HTML untagged text with <p> tag using Nokogiri?如何使用 Nokogiri 用 <p> 标签包装 HTML 未标记文本?
【发布时间】:2012-01-23 18:56:28
【问题描述】:

我必须将 HTML 文档解析为不同的新文件。问题是有些文本节点没有用"&lt;p&gt;" 标签包裹,而是在每个段落的末尾有"&lt;br&gt;" 标签。

我想使用 Nokogiri 用 &lt;p&gt; 标记包装此文本:

<div id="f15"><b>Footnote 15</b>: Catullus iii, 12.</div>
<div class="pgmonospaced pgheader"><br/>
<br/>
End of the Project abc<br/>
<br/>
*** END OF THIS PROJECT XYZ ***<br/>
<br/>
***** This file should be named new file.html... *****<br/>
<br/></div>

【问题讨论】:

  • 我相信 DOM 会对你有所帮助。每个标签都是一些节点,但文本是textNode。所以这是解析兄弟的问题。
  • @Yuri:谢谢你的评论,是的,我同意你的看法,你能给我一些 Nokogiri 代码来搜索它吗..
  • 对不起,这就是为什么它只是一个评论,而不是答案。我根本不是 Nokogiri 专家。但即使在 Nokogiri 也没有这种情况。了解 XPath。
  • “他们在每个段落的末尾都有“
    ”标签”?你是指句子还是段落?通常,&lt;br&gt; 强制使用行尾而非段落。 &lt;p&gt; 标签标记一个段落。
  • @NadeemYasin,如果您对您的问题有合适的答案,请使用您的发现创建一个答案,然后选择它作为解决方案。也将其从您的问题中删除。这样它就会被系统标记为已回答。干得好!

标签: html ruby xml nokogiri


【解决方案1】:

在搜索了一些论坛并在本地进行了一些调试后,我找到了以下解决我的问题的方法。

html_doc = Nokogiri::HTML.parse('path/to/html_file')
html_doc
html_doc.search("//br/preceding-sibling::text()|//br/following-sibling::text()").each do |node|
    node.replace(Nokogiri.make("<p>#{node.to_html}</p>"))
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-29
    • 1970-01-01
    • 2015-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多