[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

REXML and entities

Pawel Szymczykowski

3/31/2006 12:49:00 AM

Hi,

I've been trying to use REXML to process an XML file with entities,
but I can't seem to get it to leave my entities alone even with the
:raw context set. The simplified example looks something like this:

---
# song.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Song [
<!ELEMENT Song (lyric*)>
<!ELEMENT lyric (#PCDATA)>
<!ENTITY convoy "we got a great big convoy">
<!ENTITY rubberduck "ain't she a beautiful sight">
]>
<Song>
<lyric>&convoy;</lyric>
<lyric>&rubberduck;</lyric>
</Song>
---
# script.rb:
doc = Document.new File.open('song.xml', 'r'), { :raw => :all }

doc.elements.each('Song/lyric') do |lyric|
puts lyric.raw # This prints 'true'
puts lyric.text # This always has its entities decoded!
end
---
# output:
true
we got a great big convoy
true
ain't she a beautiful sight
---
# desired output:
true
&convoy;
true
&rubberduck;
---

When I take out the { :raw => :all } part, the entry.raw line returns
nil, but the output isn't changed. Am I misunderstanding how this is
supposed to work, or is it broken? How can I get the entities back in
an unencoded form? This is driving me crazy.

Thanks!

-Pawel