xerces serializing <

  • Thread starter Malcolm Dew-Jones
  • Start date
M

Malcolm Dew-Jones

shaun roe ([email protected]) wrote:
: a follow up with new problems from my previous post:

: I have xml encoded in a string with elements like <myElement/>

: e.g

: <codeFragment> &lt;myElement&gt;some text&lt;/myElement&gt;
: </codeFragment>

: I parse this in Xerces and I can see it has done the correct thing,
: but now I want to serialize the output so it **looks** like valid xml,
: i.e.
: <codeFragment> <myElement>someText</myElement> </codeFragment>

: this doesnt happen; instead I get

: <codeFragment> &lt;myElement>someText &lt/myElement> </codeFragment>

: I dont want to change the DOM model, I just want the serializer to
: output text which has the "<" in it. Is there some way of stopping it
: escaping the "<" ?

: note: unfortunately I am restricted to simple text in the node, I cannot
: insert a CDATA. (not sure this would solve it anyway).


Is there some option to _not_ escape the text? I know that using xalan
you can use an option (it's part of xlst) to not escape text. Since xalan
is based on xerces, I wonder if it is xerces that has an option to do
this?

OR

Take your text after it is un-escaped and parse that a second time. Now
take that small node tree and splice it into the original in place of the
text that contained the escaped < & >'s. When the whole is serialized
then that part of the xml will be output with tags as you wish. ($0.10)
 
S

shaun roe

a follow up with new problems from my previous post:

I have xml encoded in a string with elements like &lt;myElement/&gt;

e.g

<codeFragment> &lt;myElement&gt;some text&lt;/myElement&gt;
</codeFragment>

I parse this in Xerces and I can see it has done the correct thing,
but now I want to serialize the output so it **looks** like valid xml,
i.e.
<codeFragment> <myElement>someText</myElement> </codeFragment>

this doesnt happen; instead I get

<codeFragment> &lt;myElement>someText &lt/myElement> </codeFragment>

I dont want to change the DOM model, I just want the serializer to
output text which has the "<" in it. Is there some way of stopping it
escaping the "<" ?

note: unfortunately I am restricted to simple text in the node, I cannot
insert a CDATA. (not sure this would solve it anyway).


cheers

shaun
 
M

Martin Honnen

shaun said:
I have xml encoded in a string with elements like &lt;myElement/&gt;

e.g

<codeFragment> &lt;myElement&gt;some text&lt;/myElement&gt;
</codeFragment>

I parse this in Xerces and I can see it has done the correct thing,
but now I want to serialize the output so it **looks** like valid xml,
i.e.
<codeFragment> <myElement>someText</myElement> </codeFragment>

You can only talk about "valid" XML if you have a DTD or schema.
As for those snippets, both are "well-formed" XML, obviously the first
one is one elements with some text as a child node while the second is
an element with text and an element as child nodes.

this doesnt happen; instead I get

<codeFragment> &lt;myElement>someText &lt/myElement> </codeFragment>

Text has to be serialized with '<' escaped as &lt;, otherwise it is not
a proper serialization.
I dont want to change the DOM model, I just want the serializer to
output text which has the "<" in it. Is there some way of stopping it
escaping the "<" ?

If you first choose to escape some XML markup as text in an XML document
you can't complain that the XML tools then treat that as text. Of course
with the DOM you can read out the text contents of an element and then
feed that to a new DOM parser to parse it as XML.
Or you would need to write your own serializer traversing a DOM tree and
not escaping text contents or perhaps not escaping text contents in
certain elements.
 
P

Peter Flynn

shaun said:
a follow up with new problems from my previous post:

I have xml encoded in a string with elements like &lt;myElement/&gt;

e.g

<codeFragment> &lt;myElement&gt;some text&lt;/myElement&gt;
</codeFragment>

That isn't XML. It's text that happens to have character entities in it.
I parse this in Xerces and I can see it has done the correct thing,
but now I want to serialize the output so it **looks** like valid xml,
i.e.
<codeFragment> <myElement>someText</myElement> </codeFragment>

this doesnt happen; instead I get

<codeFragment> &lt;myElement>someText &lt/myElement> </codeFragment>

I dont want to change the DOM model, I just want the serializer to
output text which has the "<" in it. Is there some way of stopping it
escaping the "<" ?

note: unfortunately I am restricted to simple text in the node, I
cannot insert a CDATA. (not sure this would solve it anyway).

See the FAQ: http://xml.silmaril.ie/authors/html/

///Peter
 

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

Forum statistics

Threads
473,744
Messages
2,569,483
Members
44,902
Latest member
Elena68X5

Latest Threads

Top