关于 documentbuilder 保存xml文件如何格式化 ?!

目前对XML新增加的节点都在一行,如何格式化输出XML的树形结构 !?
[b]问题补充:[/b]
这里说的“输出”是保存到文件,而不是输出的控制台或者页面。
[b]问题补充:[/b]
lovewhzlq: 这个我知道,其实我知道dom4j和jdom有这个功能,问题是如何用jdk里自带的documentBuilder来格式化。

试一下:

[code="java"]

TransformerFactory tf=TransformerFactory.newInstance();
Transformer transformer=tf.newTransformer();
DOMSource source=new DOMSource(document);
transformer.setOutputProperty(OutputKeys.ENCODING,"GB2312");
transformer.setOutputProperty(OutputKeys.INDENT,"yes");
PrintWriter pw=new PrintWriter(new FileOutputStream(filename));
StreamResult result=new StreamResult(pw);
transformer.transform(source,result);

[/code]

Transformer可以定义一些输出时候的参数。

java的DocumentBuilder吗?

发一个ajax请求,将目前的xml串在后台拼成有树型格式的,然后返回

用java本身的dom api是没有格式化输出这功能,

你用dom4j或jdom来很容易做

JDOM
[code="java"]
import java.io.File;
import java.io.IOException;

import org.jdom.*;
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;
import org.jdom.output.Format;

public class JDOMConvert
{
public static void main(String[] args)
{
SAXBuilder saxBuilder=new SAXBuilder();
File file=new File("students.xml");
try
{
Document doc=saxBuilder.build(file);
//------------------添加节点------------------
//创建表示一个学生信息的各元素节点
Element eltStu=new Element("student");
Element eltName=new Element("name");
Element eltAge=new Element("age");

        //设置<name>和<age>元素的文本内容
        eltName.setText("王五");
        eltAge.setText("19");

        //将<name>和<age>元素添加为<student>元素的内容
        eltStu.addContent(eltName);
        eltStu.addContent(eltAge);

        //为<student>元素设置属性sn,值为03
        eltStu.setAttribute("sn","03");

        Element root=doc.getRootElement();
        root.addContent(eltStu);

        //------------------删除节点------------------
        root.removeChild("student");

        //------------------修改节点------------------
        root.getChild("student").getChild("age").setText("22");
        //Format fmt=Format.getRawFormat();
        XMLOutputter xmlOut=new XMLOutputter();
        Format fmt=Format.getPrettyFormat();
        fmt.setEncoding("GBK");
        fmt.setIndent("    ");
        xmlOut.setFormat(fmt);
        xmlOut.output(doc,System.out);
    }
    catch(IOException e){System.out.println(e.getMessage());}
    catch(JDOMException e){System.out.println(e.getMessage());}
}    

}

[/code]

晕倒,一样嘛

只不过这行的System.out修改为文件输出流嘛

xmlOut.output(doc,new FileOutputStream("test.xml"));

不是说了嘛
jdk里自带的documentBuilder没有这个功能,

除非输出的时候自己构造