Write formatted XML to a file  
Author Message
pavel.orehov@gmail.com





PostPosted: 2007-7-17 15:53:00 Top

java-programmer, Write formatted XML to a file Hi,

I create the XML with DOM and save it to a file. But when I open such
file with Notepad, for instance, I see the XML file in one line - it
is not formatted/aligned. If I open it with IExplorer it looks fine.

I am looking for the way to save XML to a file so that XML would be
formatted.

The save code:
-------------------
doc.getDocumentElement().normalize();
DOMSource ds = new DOMSource(doc);
StreamResult sr = new StreamResult(out);
TransformerFactory tf = TransformerFactory.newInstance();
Transformer trans = tf.newTransformer();
trans.transform(ds, sr);

Thanks,
Pavel

 
evgchech





PostPosted: 2007-7-17 17:07:00 Top

java-programmer >> Write formatted XML to a file On Jul 17, 9:52 am, "email***@***.com" <email***@***.com>
wrote:
> Hi,
>
> I create the XML with DOM and save it to a file. But when I open such
> file with Notepad, for instance, I see the XML file in one line - it
> is not formatted/aligned. If I open it with IExplorer it looks fine.
>
> I am looking for the way to save XML to a file so that XML would be
> formatted.
>
> The save code:
> -------------------
> doc.getDocumentElement().normalize();
> DOMSource ds = new DOMSource(doc);
> StreamResult sr = new StreamResult(out);
> TransformerFactory tf = TransformerFactory.newInstance();
> Transformer trans = tf.newTransformer();
> trans.transform(ds, sr);
>
> Thanks,
> Pavel

public static String formatIdent(Document xmlNode) throws
IOException {
StringWriter strWriter = null;
XMLSerializer probeMsgSerializer = null;
OutputFormat outFormat = null;
String identString = null;
try {
probeMsgSerializer = new XMLSerializer();
strWriter = new StringWriter();
outFormat = new OutputFormat();

// Setup format settings
outFormat.setEncoding("UTF-8");
outFormat.setVersion("1.0");
outFormat.setIndenting(true);
// Define a Writer
probeMsgSerializer.setOutputCharStream(strWriter);
// Apply the format settings
probeMsgSerializer.setOutputFormat(outFormat);
// Serialize XML Document
probeMsgSerializer.serialize(xmlNode);

identString = strWriter.toString();
if(identString.indexOf("\n") != -1){
identString =
identString.substring(
identString.indexOf("\n") + 1,
identString.length());
}
strWriter.close();

}
catch (IOException ioEx) {
throw new IOException(
"Failed to format xml document." + ioEx.getMessage());
}
return identString;
}

 
RedGrittyBrick





PostPosted: 2007-7-18 4:29:00 Top

java-programmer >> Write formatted XML to a file email***@***.com wrote:
> Hi,
>
> I create the XML with DOM and save it to a file. But when I open such
> file with Notepad, for instance, I see the XML file in one line - it
> is not formatted/aligned. If I open it with IExplorer it looks fine.
>
> I am looking for the way to save XML to a file so that XML would be
> formatted.

You are missing three vital steps ...

>
> The save code:
> -------------------
> doc.getDocumentElement().normalize();
> DOMSource ds = new DOMSource(doc);
> StreamResult sr = new StreamResult(out);

StreamResult sr = new StreamResult(
new OutputStreamWriter(out, "utf-8"));

> TransformerFactory tf = TransformerFactory.newInstance();

tf.setAttribute("indent-number", 4);

> Transformer trans = tf.newTransformer();

trans.setOutputProperty(OutputKeys.INDENT,"yes");

> trans.transform(ds, sr);
>