If you are stuck with a bad post processor, than you will have to post process 
what xerces spits out with something like

xmlAsAString = xmlAsAString.replaceAll("<([^>]*)/>", "<$1></$1>");

-----Original Message-----
From: "Ian Hummel" <hum...@parityinc.net>
Sent: Monday, December 15, 2008 3:08pm
To: "j-users@xerces.apache.org" <j-users@xerces.apache.org>
Subject: Re: How to preserve an empty text node?

Hi Michael,


I know <tag></tag> and <tag/> are the same, but unfortunately the 
buggy-parser-that-cannot-be-changed on the other end doesn't :)





DocumentBuilder db = dbf.newDocumentBuilder();
Document d = db.newDocument();
Element root = d.createElement("root");
Element tag = d.createElement("tag");
tag.setTextContent("");
d.appendChild(root);
root.appendChild(tag);
System.out.println(XmlUtils.formatXmlAsString(d));




This always outputs <tag/> and never <tag></tag> like I need it to.


- Ian.







On Dec 12, 2008, at 10:33 PM, Michael Glavassevich wrote:

Hi Ian,
 
 > I need to create XML that looks like this whenever the value of 
 > "tag" is "" (the empty string):
 > 
 > <root>
 > <tag></tag>
 > </root>
 
 Why? <tag/> and <tag></tag> have the same meaning. Whichever form is chosen by 
the serializer should have no significance.
 
 > I am more concerned in preserving the empty text node when I 
 > serialize to e.g. a file... not so much the parsing.
 > 
 > Any one else have any ideas?
 
 Would help if you showed your code for serializing the document. 
 
 > Are blank text nodes like that invalid XML or something?
 
 In the snippet you posted you created a text node with the '\t' (tab) 
character in it. That isn't "blank" or empty.
 
 Thanks.
 
 Michael Glavassevich
 XML Parser Development
 IBM Toronto Lab
 E-mail: [mailto:mrgla...@ca.ibm.com] mrgla...@ca.ibm.com
 E-mail: [mailto:mrgla...@apache.org] mrgla...@apache.org
 
 Ian Hummel <[mailto:hum...@parityinc.net] hum...@parityinc.net> wrote on 
12/12/2008 09:21:47 AM:
 
 > Hi, I didn't really understand how that's going to help.
 > 
 > I am more concerned in preserving the empty text node when I 
 > serialize to e.g. a file... not so much the parsing.
 > 
 > Any one else have any ideas?  Are blank text nodes like that invalid
 > XML or something?
 > 
 > On Dec 11, 2008, at 11:53 AM, [mailto:ravika...@gmail.com] 
 > ravika...@gmail.com wrote:
 > 
 > Hi Lan,
 > 
 > I think we can Implement by LSParser Interface. [http://java.sun] 
 > http://java.sun.
 > com/j2se/1.5.0/docs/api/org/w3c/dom/ls/LSParser.html
 > this link may help you.
 > 
 > Regards,
 > Ravikanth
 
 > On Thu, Dec 11, 2008 at 7:36 PM, Ian Hummel <[mailto:hum...@parityinc.net] 
 > hum...@parityinc.net> wrote:
 > Hi everyone,
 > 
 > I need to create XML that looks like this whenever the value of 
 > "tag" is "" (the empty string):
 > 
 > <root>
 > <tag></tag>
 > </root>
 > 
 > I've tried the following:
 > 
 > DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
 > DocumentBuilder db = dbf.newDocumentBuilder();
 > Document d = db.newDocument();
 > Element root = d.createElement("root");
 > Element tag = d.createElement("tag");
 > d.appendChild(root);
 > root.appendChild(tag);
 > Text text = d.createTextNode("\t");
 > tag.appendChild(text);
 > 
 > but I always end up with XML like this:
 > 
 > <root>
 > <tag/>
 > </root>
 > 
 > Is there a way to force empty text nodes to get "denormalized" ?
 > 
 > Thanks,
 > 
 > Ian.
 > 
 > -- 
 > Ravikanth

Reply via email to