1


0

RubyでXMLタグを解析するときに、すべてのコンテンツの合計を取得する方法

私はこのようなXHTMLを持っています(しかし実際にはどんなXMLでも構いません)。

  Hello,
  World!

「++」の完全なコンテンツを取得するにはどうすればよいですか

==

Rubyの文字列として? のように:

assert_equal "Hello, World!", h1_node.some_method_that_aggregates_all_content

XMLフレームワーク(http://github.com/tenderlove/nokogiri/tree/master[Nokogiri]、http://libxml.rubyforge.org/[libxml-ruby]のいずれかを実行してください。 そうでなければ、私はY-Combinatorがその仕事にふさわしいツールであるかもしれないように感じますが、それがどんなものになるか私は完全には理解できません。

2 Answer


3


Nokogiriを使用すると、ノードの「+ text +」を要求できます。 私がそうするとき私が見る問題はそのノードにあるすべての空白と改行が返されるということです、それであなたはそれらを取り除くことを望むかもしれません(私がこの例のためにやったよりそれをするより良い方法)

これがサンプルです:

def test_nokogiri_text
  value = Nokogiri::HTML.parse(<<-HTML_END)
    "
      Hello,
      World!
     "
  HTML_END

  h1_node = value.search("h1").first
  assert_equal("Hello, World!", h1_node.text.split(/\s+/).join(' ').strip)
end


2


Nokogiriの Nokogiri::XML::Node#contentはそれをするでしょう:

irb(main):020:0>ノード
=>
こんにちは世界!

irb(main):021:0> node.content
=> "\ nこんにちは、\ n世界!\ n \ n"