目前对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没有这个功能,
除非输出的时候自己构造