Try the following code.
ByteArrayOutputStream bao=new ByteArrayOutputStream();
XMLSerializer s = new XMLSerializer();
s.setOutputByteStream(bao);
s.serialize(fDocument); // fDocument is xml document
System.out.println(bao.toString());
Jim O'Neill
Ducat Commerce, LLC
www.ducatcommerce.com
-----Original Message-----
From: RHS Linux User <[EMAIL PROTECTED]>
To: [EMAIL PROTECTED] <[EMAIL PROTECTED]>
Date: Wednesday, February 09, 2000 10:22 AM
Subject: Re: Retrieving XML Doc from DOM as a string
>
>Actually, if you're using or overwise want to download the Xerces-C
>distribution, there is a program in the "samples" directory called
>"DOMPrint.cpp" that is exactly like your program below. Guess there isn't
>anything like it currently built into Xerces...
>
>-- HSN
>
>On Wed, 9 Feb 2000, Kenneth Ramirez wrote:
>
>>
>>
>> I convinced the organization that I'm currently consulting to start using
Xerces
>> in our middle tier to return data retrieved from the database to the
browser.
>> We actually have to first go through an ASP page before hitting the
browser
>> (since the site is managed with IIS). In order to return the XML
document to
>> the active server page, we're placing our data first into a DOM so that
it
>> creates the structure for us, then we pull out the XML document as a
string and
>> return it to the ASP. Here is the problem, I could not find a way to
retrieve
>> the code from the XML document as a string, so I had to write my own. Am
I
>> missing something, or am I correct in assuming that there is no way of
pulling
>> the data out from the DOM as a string? I'd expect that there would be
some
>> method on the DOM as follows:
>>
>> Document doc = ...; // Get the document and fill it with the XML
data.
>> String xmlDocAsString = doc.getXMLDocAsString();
>> return xmlDocAsString;
>>
>> I went ahead and wrote my own, based on an example that I found on the
IBM
>> development site in the Java/XML tutorial. The following is the code
that I
>> wrote, which I hope is included into the Xerces implementation if the
>> functionality is not there yet. I'm sure that others will have a similar
need:
>>
>> String getXMLDocAsString(Node node)
>> {
>> String str = new String();
>>
>> int type = node.getNodeType();
>> switch (type)
>> {
>> case Node.DOCUMENT_NODE:
>> {
>> str = str.concat("<?xml version=\"1.0\" ?>");
>> str =
>> str.concat(getXMLDocAsString(((Document)node).getDocumentElement()));
>> break;
>> }
>>
>> case Node.ELEMENT_NODE:
>> {
>> str = str.concat("<");
>> str = str.concat(node.getNodeName());
>> NamedNodeMap attrs = node.getAttributes();
>> for (int i = 0; i < attrs.getLength(); i++)
>> {
>> Node attr = attrs.item(i);
>> str = str.concat(" " + attr.getNodeName() + "=\"" +
>> attr.getNodeValue() + "\"");
>> }
>> str = str.concat(">");
>>
>> NodeList children = node.getChildNodes();
>> if (children != null)
>> {
>> int len = children.getLength();
>> for (int i = 0; i < len; i++)
>> str =
str.concat(getXMLDocAsString(children.item(i)));
>> }
>>
>> break;
>> }
>>
>> case Node.ENTITY_REFERENCE_NODE:
>> {
>> str = str.concat("&");
>> str = str.concat(node.getNodeName());
>> str = str.concat(";");
>> break;
>> }
>>
>> case Node.CDATA_SECTION_NODE:
>> {
>> str = str.concat("<![CDATA[");
>> str = str.concat(node.getNodeValue());
>> str = str.concat("]]>");
>> break;
>> }
>>
>> case Node.TEXT_NODE:
>> {
>> str = str.concat(node.getNodeValue());
>> break;
>> }
>>
>> case Node.PROCESSING_INSTRUCTION_NODE:
>> {
>> str = str.concat("<?");
>> str = str.concat(node.getNodeName());
>> String data = node.getNodeValue();
>> {
>> str = str.concat(" ");
>> str = str.concat(data);
>> }
>> str = str.concat("?>");
>> break;
>> }
>> }
>>
>> if (type == Node.ELEMENT_NODE)
>> {
>> str = str.concat("</");
>> str = str.concat(node.getNodeName());
>> str = str.concat(">");
>> }
>>
>> return str;
>> }
>>
>> Thanks,
>>
>> Ken Ramirez (Master-Mind Consulting Services, Inc. -
[EMAIL PROTECTED] or
>> www.mastermind.com)
>>
>>
>>
>>
>
>