//程序用这个:)//自己定义Format
/**
 * <p>Title: Pretty XML</p>
 *
 * <p>Description: Pretty XML</p>
 *
 * <p>Copyright: Copyright (c) 2004</p>
 *
 * <p>Company: </p>
 *
 * @author YuLimin
 * @version 1.0
 */import java.io.*;import org.jdom.*;
import org.jdom.input.*;
import org.jdom.output.*;public class PrettyXML
{
    private String extName = "";
    public void setExtName(String ExtName)
    {
        this.extName = ExtName;
    }    public String getExtName()
    {
        return extName;
    }   public PrettyXML()
    {
    }    public void pretty(String filename)
    {
        try
        {
            // Build the document with SAX and Xerces, no validation
            SAXBuilder builder = new SAXBuilder();
            // Create the document
            Document doc = builder.build(new File(filename));
            // Output the document, use Pretty formatter
            XMLOutputter fmt = new XMLOutputter();
            fmt.setFormat(Format.getPrettyFormat());            //FileOutputStream
            OutputStream os = new FileOutputStream(filename + extName);
            fmt.output(doc,os);
            os.flush();
            os.close();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }    public static void main(String[] args)
    {
        String filenameIn = ""; //args[0];
        filenameIn = "Z:\\Java\\Example.xml";        PrettyXML prettyXML = new PrettyXML();
        prettyXML.setExtName("Pretty.xml");
        prettyXML.pretty(filenameIn);
    }
}

解决方案 »

  1.   

    dom4j也有这样的功能
    下面的代码里面的this.doc就是一个你需要格式化的xml的Document
        /**
         * 
         * 格式化生成XML文档,并解决中文问题
         * 
         * @return 返回操作结果, 0表示失败, 1表示成功
         *  
         */
        public int writeXMLFile()
        {
            int returnValue = 0;
            try
            {
                XMLWriter writer = null;            /** 格式化输出,类型IE浏览一样 */            OutputFormat format = OutputFormat.createPrettyPrint();            /** 指定XML编码 */            format.setEncoding( "GB2312" );            writer = new XMLWriter( new FileWriter( new File( this.filename) ), format );            writer.write( this.doc );            writer.close();            /** 执行成功,需返回1 */            returnValue = 1;
                format = null;
                writer = null;
            }
            catch ( Exception ex )
            {            ex.printStackTrace();        }        return returnValue;
        }
      

  2.   

    俺觉得还是Xerces提供的格式化和系列化工具类好用。
      

  3.   

    还真是各显神通呢,见识了,^_^
    阿敏总司令的程序格式化,用了fmt.setFormat(Format.getPrettyFormat());(Format有这个方法么?我都不知道诶)
    比我写的要简洁,收藏了
      

  4.   

    zcjl,当然可以呀,JDom啊import org.jdom.Document;
    import org.jdom.input.SAXBuilder;
    import org.jdom.output.Format;
    import org.jdom.output.XMLOutputter;Format.getPrettyFormat是静态方法:)
      

  5.   

    谢谢阿敏总司令!我是说我以前竟然都不知道有getPrettyFormat
    害得自己写一大堆程序来实现内容的格式化