11.10. Kompresowanie białych znaków w dokumencie XML

Problem

Parser biblioteki REXML traktuje wszystkie białe znaki w węzłach tekstowych na równi z innymi znakami. Chcielibyśmy zmniejszyć rozmiar dokumentu, usuwając z niego niepotrzebne białe znaki.

Rozwiązanie

Można nakazać parserowi kompresowanie ciągów białych znaków, specyfikując stosowną opcję w wywołaniu konstruktora Document.new:

require 'rexml/document'

text = %{<doc><a>Kilka      białych znaków</a>    <b>I tu    też</b></doc>}

REXML::Document.new(text, { :compress_whitespace => :all }).to_s
# => "<doc><a>Kilka białych znaków</a> <b>I tu też</b></doc>"

Dyskusja

Niekiedy białe znaki w dokumencie XML są istotne, zwykle jednak (zwłaszcza w przypadku stron WWW) można zastępować ich ...

Get Ruby. Receptury now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.