,您可以使用類似下面,它不是單純的XPath的解決方案,因爲我對結果,進行一些處理:
XPath.each(xmldoc, "//p/span/text()|//p/text()").map(&:to_s).map(&:strip).reject(&:empty?)
可以避免
進一步處理,新的生產線可以從輸入中刪除
xmldoc = Document.new(html.split("\n").join)
XPath.match(xmldoc, "//p/span/text()|//p/text()")
工作如下樣品:
require 'rexml/document'
include REXML
html = <<-eos
<html>
<p class='out'>
<span>John</span>
</p>
<p class='out'>
Alice
</p>
<p class='out'>
<span>Tim</span>
</p>
<p class='out'>
Doe
</p>
<p class='out'>
<span>Tina</span>
</p>
<p class='out'>
Joseph
</p>
</html>
eos
xmldoc = Document.new(html)
XPath.each(xmldoc, "//p/span/text()|//p/text()").map(&:to_s).map(&:strip).reject(&:empty?)
#=> ["John", "Tim", "Tina", "Alice", "Doe", "Joseph"]
我們希望看到您嘗試的XPath。詢問但不顯示你的嘗試使它看起來像你希望我們爲你寫,而不是幫你修復你的工作。這也導致我們在黑暗中拍攝,試圖猜測你知道什麼,沒有嘗試過什麼,從而導致對廣泛問題的廣泛回答。請閱讀「[問]」和「[mcve]」。 –
使用'|'操作符 –
@TheTinMan沒有包含它,因爲它非常簡單。不知道Xpath足夠的搜索來獲得我正在尋找的,這就是爲什麼發佈這個。可能這可能很簡單。 –