我試圖從使用Nokogiri的HTML文檔中獲取所有節點。如果你們認爲它更容易,我可以使用其他的東西。使用Nokogiri從Ruby中的HTML文檔獲取所有節點
我有這樣的HTML:
<html>
<body>
<h1>Header1</h1>
<h2>Header22</h2>
<ul>
<li>Li1</li>
<ul>
<li>Li1</li>
<li>Li2</li>
</ul>
</ul>
</body>
</html>
的字符串形式:
string_page = "<html><body><h1>Header1</h1><h2>Header22</h2><ul><li>Li1</li><ul><li>Li1</li><li>Li2</li></ul></ul></body></html>"
我創建的對象:
page = Nokogiri.HTML(string_page)
我試圖穿越它:
result = []
page.traverse { |node| result << node.name unless node.name == "text" }
=> ["html", "h1", "h2", "li", "li", "li", "ul", "ul", "body", "html", "document"]
但我不喜歡的是元素的順序。我需要有一個與它們的顯示順序相同的數組:
["html", "body", "h1", "h2", "ul", "li", "ul", "li", "li" ]
我不需要結束標記。
有沒有人有更好的解決方案來實現這個目標?
你爲什麼這樣做?迭代遍歷每個節點是非常低效的。你可以用SAX解析器做同樣的事情,它可能運行得更快。 – 2014-12-04 16:17:53