2 Stimmen

Wie findet man alle Kindknoten innerhalb der übereinstimmenden Elemente (einschließlich Textknoten)?

In jQuery ist es ziemlich einfach

zum Beispiel

$("br").parent().contents().each(function() {

aber für Nokogiri, XPath,

funktioniert es nicht besonders gut

var = doc.xpath('//br/following-sibling::text()|//br/preceding-sibling::text()').map do |fruit| fruit.to_s.strip end

2voto

akuhn Punkte 26637
require 'rubygems'
require 'nokogiri'

doc = Nokogiri::HTML(DATA.read)
fruits = doc.xpath('//br/../text()').map { |text| text.content.strip }
p fruits

__END__

    Apfel
    Banane
    Kirsche
    Orange

0voto

James Sulak Punkte 29697

Ich bin nicht vertraut mit Nokogiri, aber versuchst du alle Kinder eines Elements zu finden, das einenthält? Wenn ja, dann versuche es mit:

//*[br]/node()

In jedem Fall wird das Verwenden von text() nur Textknoten abgleichen und nicht alle Geschwister-Elemente, was möglicherweise nicht das ist, was du möchtest. Wenn du tatsächlich nur Textknoten möchtest, dann sollte das funktionieren:

//*[br]/text()

sollte funktionieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X