захват текста между всеми тегами в Nokogiri?

Можно также отобразить несколько пространств имен CLR вместе в одно пространство имен XML путем добавления XmlnsDefinitionAttribute к блокам. Это - то, что команда WPF сделала путем отображения большого количества пространств имен под Системой. Windows как это:

[XmlnsDefinitionAttribute(
    "http://schemas.microsoft.com/winfx/2006/xaml/presentation", 
    "System.Windows.Controls")]
[XmlnsDefinitionAttribute(
    "http://schemas.microsoft.com/winfx/2006/xaml/presentation", 
    "System.Windows.Ink")]

Этот синтаксис может упростить Ваш XAML, но бояться иметь классы с тем же именем в пространствах имен CLR, которые Вы объединяете вместе.

9
задан KJW 3 October 2009 в 05:04
поделиться

3 ответа

doc = Nokogiri::HTML(your_html)
doc.xpath("//text()").to_s
25
ответ дан 4 December 2019 в 06:57
поделиться

Используйте синтаксический анализатор Sax. Намного быстрее, чем вариант XPath.

require "nokogiri"

some_html = <<-HTML
<html>
  <head>
    <title>Title!</title>
  </head>
  <body>
    This is the body!
  </body>
</html>
HTML

class TextHandler < Nokogiri::XML::SAX::Document
  def initialize
    @chunks = []
  end

  attr_reader :chunks

  def cdata_block(string)
    characters(string)
  end

  def characters(string)
    @chunks << string.strip if string.strip != ""
  end
end
th = TextHandler.new
parser = Nokogiri::HTML::SAX::Parser.new(th)
parser.parse(some_html)
puts th.chunks.inspect
5
ответ дан 4 December 2019 в 06:57
поделиться

Вот как получить весь текст в разделе вопросов на этой странице:

require 'rubygems'
require 'nokogiri'
require 'open-uri'

doc = Nokogiri::HTML(open("http://stackoverflow.com/questions/1512850/grabbing-text-between-all-tags-in-nokogiri"))
puts doc.css("#question").to_s
1
ответ дан 4 December 2019 в 06:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: