11.8. Zastępowanie encji XML

Problem

Dokument XML zawiera wewnętrzne encje. Chcemy zastąpić te encje odpowiadającymi im wartościami.

Rozwiązanie

Zastępowanie encji w konkretnym elemencie tekstowym wykonywane jest przez jego metodę value. Jeśli jest to pierwszy element tekstowy swego węzła-ojca, można także wykorzystać metodę Text tego ostatniego.

Widoczny poniżej dokument zawiera dwie encje w pojedynczym węźle tekstowym. Możemy zastąpić te encje wartościami bez modyfikowania samego dokumentu:

require 'rexml/document' str = %{<?xml version="1.0"?> <!DOCTYPE doc [ <!ENTITY product 'Stargaze'> <!ENTITY version '2.3'> ]> <doc> &product; v&version; to najbardziej zaawansowany produkt astronomiczny na rynku. </doc>} doc = REXML::Document.new ...

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.