[英]Parse HTML (without HTML semantics being followed) using Nokogiri
我有一個包含數據的 HTML 文檔:
<div>
<p class="someclass">
<ul>
<li>Item 1</li>
<li>Item 2</li>
</ul>
</p>
</div>
解析時我使用:
div_node.children.each do |child|
if child.node_name == 'p'
#store it as html string in db
store(child.to_html)
end
end
當我檢查數據庫時,我只得到外面的<p>
標簽:
<p class="someclass">
</p>
沒有存儲或檢索內部<ul>
標簽內容。
我知道<p>
標簽不能包含<ul>
標簽,但是我們從客戶端得到的文檔有數據,並且有大約 1000 個帶有數據的文檔,所以我無法手動編輯它們
嘗試使用Nokogiri::XML
解析器而不是Nokogiri::HTML
解析器。 它不應該關心標簽語義,但我不確定它將如何處理 HTML5 中不是有效 XML 的那些部分。
我最終使用Nokogiri::XML
解析器來解析HTML
文檔
我不得不在很多地方更改我的腳本
解析代碼
@xml_doc = Nokogiri::XML.parse(file) { |cfg| cfg.noblanks }
@xml_doc.remove_namespaces!
更改完成
attribute
方法更改為attr
text
方法鏈接attr
node.to_html
在這里就像一個魅力,所以我能夠在 db 中存儲完整的 HTML
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.