Hi.
Thanks, but I think this is an example of use of a former Xalan
version....The serializer structure and classes are changed.


-----Opprinnelig melding-----
Fra: Anthony Dodd [mailto:[EMAIL PROTECTED]
Sendt: 9. oktober 2003 20:34
Til: Johannes Kjos; [EMAIL PROTECTED]
Emne: RE: Method.TEXT


See the following attached function, we've using it for a while now,
should do what you require (doesn't pretty print).

------------------------------------------------------------------------
----

    /** Returns source underlying xml document. This a fail quick
implementation, if the document is not in a
     * ready state then this method will throw an exception.
     * @param node the org.w3c.dom.Node to be serialised.
     * @param omit True if XML declaration should be ommited.
     */
    public static final java.lang.String getNodeXML(org.w3c.dom.Node
node, boolean omit) throws com.synergy.exceptions.ChainedException {
        String xml = "";
        
        try {
            
            if (node != null) {
                //Create a StringWriter object to pass to the
FormatterToXML instance
                java.io.StringWriter writer = new
java.io.StringWriter();

                //Instruct the output formatter whether we want the XML
declartions or not 
                OutputFormat format = new OutputFormat((node instanceof
org.w3c.dom.Document) ? (org.w3c.dom.Document)node :
node.getOwnerDocument());
                format.setOmitXMLDeclaration(omit);
                
                //Uses the Xerces Serializer implementation
XMLSerializer
                XMLSerializer serializer = new XMLSerializer(writer,
format);
                
                //Determine which version of the serialise method to use
                if (node instanceof org.w3c.dom.Document)
                    serializer.serialize((org.w3c.dom.Document)node);
                else
                    serializer.serialize((org.w3c.dom.Element)node);
                
                //Convert the contents of the StringWriter into a String
                xml = writer.toString();
            }
            
        } catch (Exception e) {
            
            throw new ChainedException(e, Locale.getDefault());
            
        }
        
        return xml;
    }

--------------------------------------------------------

Anthony Dodd
Synergy Financial Systems Limited
Synergy House, Highfields Science Park
Nottingham NG7 2RF
United Kingdom

t: +44 (0)115 9677990
f: +44 (0)115 9677933  
e: [EMAIL PROTECTED]
w: www.synergy-fs.com
 


-----Original Message-----
From: Johannes Kjos [mailto:[EMAIL PROTECTED] 
Sent: 09 October 2003 12:39
To: '[EMAIL PROTECTED]'
Subject: Method.TEXT

Hello.
Simple problem: How do I make a String from Document? (I'm using the
xalan-j_2_5_1 distribution)
My suggestion:

----------
        Serializer ser = null;
        ByteArrayOutputStream os  = new ByteArrayOutputStream();
        WriterToUTF8Buffered writer = null;
        DOMSerializer domser = null;
        Properties props = null;

        try{
                writer = new WriterToUTF8Buffered(os);
                props =
OutputPropertiesFactory.getDefaultMethodProperties(Method.TEXT);
                ser = SerializerFactory.getSerializer(props);
                ser.setWriter(writer);
                domser = (DOMSerializer) ser.asDOMSerializer();
                domser.serialize(doc);
                writer.close();
                return os.toString();
     }catch(...
-----------

This works if I use Method.XML - but this adds the standard XML
starttagline
in my document (and I don't want that), that's why I use Method.TEXT.
Problem is: Nothing is written, only empty String with the right
size...There is something here I have missed, isn't it?

Johannes

Reply via email to