下面是我写的生成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里边
请哥哥姐姐们帮忙了 小弟不胜感激呀?
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里边
请哥哥姐姐们帮忙了 小弟不胜感激呀?
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();
}