下面是我写的生成xml文档的例子 已经运行成功 我问的问题在下面
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintWriter;import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Text;/**
 * 一种比较好的办法就是用文档的内容建立一个DOM树,然后写出数的各个内容。若要建立一个DOM数,你首先可以建立一个空文档。若要建立
 * 空文档,可调用DocumentBuilder类的newDocument方法。
 *@author Bluewater
 */public class writexml {
private Document document;
private String filename;
public writexml(String filename) throws ParserConfigurationException
{
this.filename=filename;
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();//New instance of a DocumentBuilderFactory
DocumentBuilder builder=factory.newDocumentBuilder();//A new instance of a DocumentBuilder.
document=builder.newDocument();
//A new instance of a DOM Document object.
//建立一个空的文档
}
/**
 * 然后,使用Document类的createElement方法,建立你的文档的各个元素
 * 
 * @param mytitle
 * @param mycontent
 */
public void toWrite(String mytitle,String mycontent)
{
Element root=document.createElement("welcome");
//创建文档的元素
    document.appendChild(root);
    //将根元素(父节点)添加给该文档
    
Element head=document.createElement("Head");
root.appendChild(head);
//将子节点添加给父节点

Element command=document.createElement("Command");
head.appendChild(command);
//将三节点添加给二节点(子节点)

Text textNode=document.createTextNode("Login");
//创建文本节点
        command.appendChild(textNode);
        //将文本节点添加到子节点(二节点)
        
        Element Message_id=document.createElement("Message_id");
        //创建三节点
        head.appendChild(Message_id);
        //添加到二节点
        
        Text textNode0=document.createTextNode("0");
        //创建文本
        Message_id.appendChild(textNode0);
        
        
        //Begin
        Element body=document.createElement("Body");
        //创建二节点
        root.appendChild(body);
        //添加到一节点
        Element UID=document.createElement("UID");
        //创建三节点
        body.appendChild(UID);
        //添加到二节点
        Text textNode1=document.createTextNode(mytitle);
        //创建文本点
        UID.appendChild(textNode1);
        //将文本添加到三节点
        
        Element PassWd=document.createElement("PassWd");
        //创建三节点
        body.appendChild(PassWd);
        //添加到二节点
        Text textNode2=document.createTextNode(mycontent);
        //创建文本点
        PassWd.appendChild(textNode2);
        //将文本添加到三节点
        //End
        
        //begin到end是创建一个xml的主要过程
        
   }

public void toSave()
{

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

e.printStackTrace();
}


catch (FileNotFoundException e) 
{

e.printStackTrace();
}


catch (TransformerConfigurationException e) 
{

e.printStackTrace();
}




}
public static void main(String args[]) 
{
try
{
writexml myxml=new writexml("d:\\text");
myxml.toWrite("xiaoye","380454");
myxml.toSave();
    System.out.println("your writing is successful");
    

}
catch(Exception e)
{
System.out.println("your writing is failed");
e.printStackTrace();

}


}}
最终我不想生成实际的XML文档形式。而是想把XML文档的这种格式存在一个String里边
请哥哥姐姐们帮忙了 小弟不胜感激呀?

解决方案 »

  1.   

    前一段时间在sun的论坛看到类似的,改了你的toSave函数,那个strXML应该就是你要的结果
    try {
                    //PrintWriter pw = new PrintWriter(new FileOutputStream(filename));
                    StringWriter sw=new StringWriter();
                    StreamResult result = new StreamResult(sw);
                    try {
                        transformer.transform(source, result);
                        String strXML = sw.toString();
                        System.out.println(strXML);
                    } catch (TransformerException e) {                    e.printStackTrace();
                    }            } catch (Exception e) {                e.printStackTrace();
                }