package wlz.xml;
import javax.xml.parsers.*;
import org.w3c.dom.*;
//import javax.xml.transform.*;
//import javax.xml.transform.dom.DOMSource;
//import javax.xml.transform.stream.StreamResult;
import java.io.*;
import org.apache.xml.serialize.*;
public class WriteXml {
public static void writeXml(Document doc,String filename) throws Exception{
/*TransformerFactory tf=TransformerFactory.newInstance();
Transformer f=tf.newTransformer();
//f.setOutputProperties();
DOMSource source=new DOMSource(doc);
StreamResult result=new StreamResult(new File(filename));
f.transform(source,result);*/
FileOutputStream fos = new FileOutputStream(filename);
OutputFormat of = new OutputFormat("XML","GB2312",true);
of.setIndent(2);
of.setIndenting(true);
XMLSerializer serializer = new XMLSerializer(fos,of);
serializer.asDOMSerializer();
serializer.serialize(doc.getDocumentElement());
fos.close();
}
public static void outputElement(Document doc,String elementName){
NodeList list= doc.getElementsByTagName(elementName);
System.out.println("------------------------------------------");
for(int i=0;i<list.getLength();i++){
System.out.println(elementName+"="+list.item(i).getFirstChild().getNodeValue()); //取出元素的值
}
System.out.println("------------------------------------------");
}
public static void addElement(Document doc,Element root,String name,String age,String sex){
Element student=doc.createElement("student");
Element ename=doc.createElement("name");
Element eage=doc.createElement("age");
Element esex=doc.createElement("sex");
ename.appendChild(doc.createTextNode(name));
eage.appendChild(doc.createTextNode(age));
esex.appendChild(doc.createTextNode(sex));
student.appendChild(ename);
student.appendChild(eage);
student.appendChild(esex);
root.appendChild(student);
}
public static Document createDocument() throws Exception{
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder db=dbf.newDocumentBuilder();
Document doc=db.newDocument();
return doc;
}
public static void main(String[] args) throws Exception{
/*
output the xml
<class name="计算机1班">
<student>
<name>
<age>
<sex>
</student>
<student>
<name>
<age>
<sex>
</student>
</class>
*/
Document doc=createDocument();
doc.createProcessingInstruction("encoding","gb2312");
Element root=doc.createElement("class");
root.setAttribute("name","计算机1班");
doc.appendChild(root);
addElement(doc,root,"黄蓉","30","女");
addElement(doc,root,"郭靖","32","男");
addElement(doc,root,"杨过","8","男");
outputElement(doc,"name");
outputElement(doc,"sex");
writeXml(doc,"mydomxml.xml");
System.out.println("output ok.");
}
}