[jdom-interest] Small but irritating problem
Jan-Olof Hendig
jan-olof.hendig at bredband.net
Tue Oct 26 09:18:02 PDT 2004
Hello Jason,
Thank you for your reply (and to the others that replied as well),
I tried your workaround, putting it as the first line in documentToString
method, i.e.
public static String documentToString(Document doc, boolean fIndent) {
doc.getRootElement().removeNamespaceDeclaration(Namespace.NO_NAMESPACE);
JDOMSource domSource = new JDOMSource(doc);
StringWriter stringWriter = new StringWriter();
This does not work for me, the 'xmlns' is still there. Perhaps I've
misunderstood how to apply this workaround. Should I place the line
somewhere else?
Best regards,
Jan-Olof Hendig
----- Original Message -----
From: "Jason Hunter" <jhunter at xquery.com>
To: "Bradley S. Huffman" <hip at cs.okstate.edu>
Cc: "Jan-Olof Hendig" <jan-olof.hendig at bredband.net>;
<jdom-interest at jdom.org>
Sent: Tuesday, October 26, 2004 3:36 AM
Subject: Re: [jdom-interest] Small but irritating problem
> Bummer. I'll add it to the list of things to fix. In the meanwhile, you
> can work around it by calling
> doc.getRootElement().removeNamespaceDeclaration(Namespace.NO_NAMESPACE).
>
> -jh-
>
> Bradley S. Huffman wrote:
>
>> Definitely a bug in SAXOutputter.addNsAttribute.
>>
>> Brad
>>
>> "Jan-Olof Hendig" writes:
>>
>>
>>>This is a multi-part message in MIME format.
>>>
>>>--===============0573196067==
>>>Content-Type: multipart/alternative;
>>> boundary="----=_NextPart_000_0015_01C4BAD9.9ED698B0"
>>>
>>>This is a multi-part message in MIME format.
>>>
>>>------=_NextPart_000_0015_01C4BAD9.9ED698B0
>>>Content-Type: text/plain;
>>> charset="iso-8859-1"
>>>Content-Transfer-Encoding: quoted-printable
>>>
>>>Hello folks,
>>>
>>>Just to get it over with, I'm an XML newbie so keep the flame throwers =
>>>away for a while please.
>>>
>>>Today I upgraded from JDOM beta 9 to the current release. As they say, =
>>>better late than never :) My code needed very few changes in order to =
>>>compile, the constructor for XMLOutputter had changed but that was easy =
>>>to fix. However when running the code, see below, a small =
>>>incompatibility surfaced.=20
>>>
>>>with beta 9 the code below produced the following
>>>
>>><?xml version=3D"1.0" encoding=3D"UTF-8"?>
>>><message>
>>> <request>
>>> <onlyreturnoutdata>0</onlyreturnoutdata>
>>> </request>
>>></message>
>>>
>>>however with the current release I got
>>>
>>><?xml version=3D"1.0" encoding=3D"UTF-8"?>
>>><message xmlns:=3D"">
>>> <request>
>>> <onlyreturnoutdata>0</onlyreturnoutdata>
>>> </request>
>>></message>
>>>
>>>as you can see the line containing the <message> tag suddenly includes =
>>>the attribute 'xmlns:=3D""'
>>>
>>>My question is this, how do I get rid of this xmlns attribute so that =
>>>the message looks exactly like it did in beta 9?
>>>
>>>Regards
>>>
>>>Jan-Olof Hendig
>>>
>>>/* --------------------- */
>>>
>>>
>>>public class TestCase {
>>>=20
>>> protected static Document document;
>>> protected static Element rootElement;
>>>=20
>>> public static void main(String[] args) {
>>> rootElement =3D new Element("message");
>>> Element requestElement =3D new Element("request");
>>> Element onlyReturnOutDataElement =3D new Element("onlyreturnoutdata");
>>> onlyReturnOutDataElement.addContent("0");
>>> =20
>>> requestElement.addContent(onlyReturnOutDataElement);
>>> rootElement.addContent(requestElement);
>>> document =3D new Document(rootElement);
>>>
>>> System.out.println(documentToString(document, true));
>>> }
>>>=20
>>>=20
>>> public static String documentToString(Document doc, boolean fIndent) {
>>> JDOMSource domSource =3D new JDOMSource(doc);
>>> StringWriter stringWriter =3D new StringWriter();
>>> StreamResult result =3D new StreamResult(stringWriter);
>>> =20
>>> TransformerFactory tFactory =3D TransformerFactory.newInstance();
>>> try {
>>> Transformer transformer =3D tFactory.newTransformer();
>>> if (fIndent) {
>>> transformer.setOutputProperty(OutputKeys.INDENT, "yes");
>>> =
>>>transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount"=
>>>, "3");
>>> }
>>> else
>>> transformer.setOutputProperty(OutputKeys.INDENT, "no");
>>> transformer.transform(domSource, result); =20
>>> }=20
>>> catch (Exception e) {
>>> System.out.println(e); =20
>>> }
>>> return stringWriter.toString();
>>> }
>>>}
>>>
>>>
>>>
>>>------=_NextPart_000_0015_01C4BAD9.9ED698B0
>>>Content-Type: text/html;
>>> charset="iso-8859-1"
>>>Content-Transfer-Encoding: quoted-printable
>>>
>>><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
>>><HTML><HEAD>
>>><META http-equiv=3DContent-Type content=3D"text/html; =
>>>charset=3Diso-8859-1">
>>><META content=3D"MSHTML 6.00.2900.2523" name=3DGENERATOR>
>>><STYLE></STYLE>
>>></HEAD>
>>><BODY bgColor=3D#ffffff>
>>><DIV><FONT face=3DArial size=3D2>Hello folks,</FONT></DIV>
>>><DIV><FONT face=3DArial size=3D2></FONT> </DIV>
>>><DIV><FONT face=3DArial size=3D2>Just to get it over with, I'm an XML =
>>>newbie so keep=20
>>>the flame throwers away for a while please.</FONT></DIV>
>>><DIV><FONT face=3DArial size=3D2></FONT> </DIV>
>>><DIV><FONT face=3DArial size=3D2>Today I upgraded from JDOM beta 9 to =
>>>the current=20
>>>release. As they say, better late than never :) My code needed very few =
>>>changes=20
>>>in order to compile, the constructor for XMLOutputter had changed but =
>>>that was=20
>>>easy to fix. However when running the code, see below, a small =
>>>incompatibility=20
>>>surfaced. </FONT></DIV>
>>><DIV><FONT face=3DArial size=3D2></FONT> </DIV>
>>><DIV><FONT face=3DArial size=3D2>with beta 9 the code below produced the
>>>=
>>>
>>>following</FONT></DIV>
>>><DIV><FONT face=3DArial size=3D2></FONT> </DIV>
>>><DIV><FONT face=3DArial size=3D2><?xml version=3D"1.0"=20
>>>encoding=3D"UTF-8"?><BR><message><BR> =20
>>><request><BR> =20
>>><onlyreturnoutdata>0</onlyreturnoutdata><BR> =20
>>></request><BR></message></FONT></DIV>
>>><DIV><FONT face=3DArial size=3D2></FONT> </DIV>
>>><DIV><FONT face=3DArial size=3D2>however with the current release I =
>>>got</FONT></DIV>
>>><DIV><FONT face=3DArial size=3D2></FONT> </DIV>
>>><DIV><FONT face=3DArial size=3D2><?xml version=3D"1.0"=20
>>>encoding=3D"UTF-8"?><BR><message xmlns:=3D""><BR> =20
>>><request><BR> =20
>>><onlyreturnoutdata>0</onlyreturnoutdata><BR> =20
>>></request><BR></message></FONT></DIV>
>>><DIV><FONT face=3DArial size=3D2></FONT> </DIV>
>>><DIV><FONT face=3DArial size=3D2>as you can see the line containing
>>>the=20
>>><message> tag suddenly includes the attribute =
>>>'xmlns:=3D""'</FONT></DIV>
>>><DIV><FONT face=3DArial size=3D2></FONT> </DIV>
>>><DIV><FONT face=3DArial size=3D2>My question is this, how do I get rid =
>>>of this xmlns=20
>>>attribute so that the message looks exactly like it did in beta =
>>>9?</FONT></DIV>
>>><DIV><FONT face=3DArial size=3D2></FONT> </DIV>
>>><DIV><FONT face=3DArial size=3D2>Regards</FONT></DIV>
>>><DIV><FONT face=3DArial size=3D2></FONT> </DIV>
>>><DIV><FONT face=3DArial size=3D2>Jan-Olof Hendig</FONT></DIV>
>>><DIV><FONT face=3DArial size=3D2></FONT> </DIV>
>>><DIV><FONT face=3DArial size=3D2>/* --------------------- =
>>>*/</FONT></DIV>
>>><DIV><FONT face=3DArial size=3D2></FONT> </DIV>
>>><DIV><FONT face=3DArial size=3D2></FONT> </DIV>
>>><DIV><FONT face=3DArial size=3D2>public class TestCase=20
>>>{<BR> <BR> protected static Document =
>>>document;<BR> protected=20
>>>static Element rootElement;<BR> <BR> public static void =
>>>main(String[]=20
>>>args) {<BR> rootElement =3D new=20
>>>Element("message");<BR> Element requestElement =3D new=20
>>>Element("request");<BR> Element onlyReturnOutDataElement =3D =
>>>new=20
>>>Element("onlyreturnoutdata");<BR> onlyReturnOutDataElement.add=
>>>Content("0");<BR> <BR> requestElement.addContent(on=
>>>lyReturnOutDataElement);<BR> rootElement.addContent(requestEle=
>>>ment);<BR> document=20
>>>=3D new Document(rootElement);</FONT></DIV>
>>><DIV><FONT face=3DArial size=3D2></FONT> </DIV>
>>><DIV><FONT face=3DArial=20
>>>size=3D2> System.out.println(documentToString(document,=20
>>>true));<BR> }<BR> <BR> <BR> public static String=20
>>>documentToString(Document doc, boolean fIndent) =
>>>{<BR> JDOMSource=20
>>>domSource =3D new JDOMSource(doc);<BR> StringWriter =
>>>stringWriter =3D new=20
>>>StringWriter();<BR> StreamResult result =3D new=20
>>>StreamResult(stringWriter);<BR> =
>>>=20
>>><BR> TransformerFactory tFactory =3D=20
>>>TransformerFactory.newInstance();<BR> try=20
>>>{<BR> Transformer transformer =3D=20
>>>tFactory.newTransformer();<BR> if (fIndent)=20
>>>{<BR> =20
>>>transformer.setOutputProperty(OutputKeys.INDENT,=20
>>>"yes");<BR> transformer.setOutputProperty("{http:/=
>>>/xml.apache.org/xslt}indent-amount",=20
>>>"3");<BR> }<BR> else<BR> &nb=
>>>sp; =20
>>>transformer.setOutputProperty(OutputKeys.INDENT,=20
>>>"no");<BR> transformer.transform(domSource,=20
>>>result); =
>>> <BR> }=20
>>><BR> catch (Exception e)=20
>>>{<BR> System.out.println(e); <BR> =
>>>}<BR> return=20
>>>stringWriter.toString();<BR> }<BR>}<BR></FONT></DIV>
>>><DIV><FONT face=3DArial size=3D2></FONT> </DIV>
>>><DIV><FONT face=3DArial size=3D2></FONT> </DIV></BODY></HTML>
>>>
>>>------=_NextPart_000_0015_01C4BAD9.9ED698B0--
>>>
>>>
>>>--===============0573196067==
>>>Content-Type: text/plain; charset="us-ascii"
>>>MIME-Version: 1.0
>>>Content-Transfer-Encoding: 7bit
>>>Content-Disposition: inline
>>>
>>>_______________________________________________
>>>To control your jdom-interest membership:
>>>http://www.jdom.org/mailman/options/jdom-interest/youraddr@yourhost.com
>>>--===============0573196067==--
>>
>> _______________________________________________
>> To control your jdom-interest membership:
>> http://www.jdom.org/mailman/options/jdom-interest/youraddr@yourhost.com
>>
More information about the jdom-interest
mailing list