REXML: Raw tags in element text?

J

Jari Williamsson

In REXML, is it possible to add raw tags to element text, without having
to add elements for those tags?
(I would like to add a few HTML tags like <b></b> to strings, before I
know what element nodes they will appear at.)


Best regards,

Jari Williamsson
 
P

Phrogz

In REXML, is it possible to add raw tags to element text, without having
to add elements for those tags?
(I would like to add a few HTML tags like <b></b> to strings, before I
know what element nodes they will appear at.)

Are you wanting to ad XML elements as children of another without
using the DOM to create them (like setting .innerHTML in a web
browser, causing it to parse your string and create elements as
necessary),

or are you wanting to set the contents of a text node to have
characters that look like XML tags, but have it automatically escape
them for you?
 
J

Jari Williamsson

Phrogz said:
Are you wanting to ad XML elements as children of another without
using the DOM to create them (like setting .innerHTML in a web
browser, causing it to parse your string and create elements as
necessary),

Yes, this is what I want.


Best regards,

Jari Williamsson
 
R

Robert Klemme

2007/11/24 said:
Yes, this is what I want.

I believe you can do it (i.e. add raw tags to text) BUT they will not
show up as tags when output. Which is completely logical once you
think about it. If you work with a DOM you have to add nodes as
nodes. Maybe you can just create a small sub tree with a <b> node and
your text as nested text and later put that <b> node into the tree.

Kind regards

robert
 
J

Jari Williamsson

Robert said:
I believe you can do it (i.e. add raw tags to text) BUT they will not
show up as tags when output. Which is completely logical once you
think about it. If you work with a DOM you have to add nodes as
nodes. Maybe you can just create a small sub tree with a <b> node and
your text as nested text and later put that <b> node into the tree.

Since nothing seems to exist I wrote my own 2-line method: It adds a raw
string, parses it and passes all nodes to the parent element. Here's the
code if anyone else would need it:

---
class REXML::Element
def add_raw_text(raw_text)
doc = REXML::Document.new("<fake>"+raw_text+"</fake>")
doc.root.children.each { |e| self << e }
end
end
---

Example:
myelement.add_raw_text("here's a <b>bold</b> test")


Best regards,

Jari Williamsson
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,768
Messages
2,569,574
Members
45,048
Latest member
verona

Latest Threads

Top