The XML file to read <?xml version= "1.0" encoding= "GB2312"?> < student roster > < student sex = "male" > < name > Li Hua </name > < age >14</Age > </Students > < student sex = "male" > < name > Zhang San </name > < age >16</Age > </Students > </Student Roster > |
Package XML;
Import Java.io.FileOutputStream;
Import Java.io.OutputStreamWriter;
Import Java.io.Writer;
Import Java.util.Iterator;
Import Java.util.Vector;
Import Javax.xml.parsers.DocumentBuilder;
Import Javax.xml.parsers.DocumentBuilderFactory;
Import Javax.xml.transform.OutputKeys;
Import Javax.xml.transform.Result;
Import Javax.xml.transform.Source;
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.Node;
Import org.w3c.dom.NodeList;
Import Org.w3c.dom.Text;
public class Domtest {
Vector Students_vector;
Private Vector readxmlfile (String file) throws Exception {
Documentbuilderfactory dbf = Documentbuilderfactory.newinstance ();
Documentbuilder builder = Dbf.newdocumentbuilder ();
Document doc = builder.parse (file); Get to XML file
Start reading below
Element root = Doc.getdocumentelement (); Get root element
NodeList students = root.getelementsbytagname_r ("student");
Students_vector = new Vector ();
for (int i = 0; i < students.getlength (); i++) {
Get every student element at a time
element ss = (Element) students.item (i);
Create an instance of a student
Student stu = new Student ();
Stu.setsex (Ss.getattribute ("gender"));
NodeList names = Ss.getelementsbytagname_r ("name");
Element e = (element) names.item (0);
Node t = e.getfirstchild ();
Stu.setname (T.getnodevalue ());
NodeList ages = Ss.getelementsbytagname_r ("Age");
E = (Element) ages.item (0);
t = E.getfirstchild ();
Stu.setage (Integer.parseint (T.getnodevalue ()));
Students_vector.add (Stu);
}
return students_vector;
}
Write XML file
public static void Callwritexmlfile (Document doc, Writer W, String encoding) {
try {
SOURCE Source = new Domsource (DOC);
result = new Streamresult (w);
Transformer Xformer = Transformerfactory.newinstance ()
. Newtransformer ();
Xformer.setoutputproperty (outputkeys.encoding, ENCODING);
Xformer.transform (source, result);
} catch (Transformerconfigurationexception e) {
E.printstacktrace ();
} catch (Transformerexception e) {
E.printstacktrace ();
}
}
private void Writexmlfile (String outfile) {
Documentbuilderfactory dbf = Documentbuilderfactory.newinstance ();
Documentbuilder builder = null;
try {
Builder = Dbf.newdocumentbuilder ();
} catch (Exception e) {
}
Document doc = Builder.newdocument ();
Element root = doc.createelement ("Student roster");
Doc.appendchild (root); To add a root element to a document
Get Student Information
for (int i = 0; i < students_vector.size (); i++) {
Student s = (student) students_vector.get (i);
Create a student
Element stu = doc.createelement ("student");
Stu.setattribute ("Gender", S.getsex ());
Root.appendchild (stu);//Add Property
Create a text name node
Element name = doc.createelement ("name");
Stu.appendchild (name);
Text tname = Doc.createtextnode (S.getname ());
Name.appendchild (Tname);
Create text Age Node
Element ages = doc.createelement ("Age");
Stu.appendchild (age); Add age to student nodes
Text Tage = Doc.createtextnode (string.valueof (S.getage ()));
Age.appendchild (Tage); Place the text node on the age node
}
try {
FileOutputStream fos = new FileOutputStream (outfile);
OutputStreamWriter outwriter = new OutputStreamWriter (FOS);
((XmlDocument) doc). Write (Outwriter); Error!
Callwritexmlfile (Doc, Outwriter, "gb2312");
Outwriter.close ();
Fos.close ();
} catch (Exception e) {
E.printstacktrace ();
}
}
public static void Main (String args[]) {
String str = "Xml/student.xml";
Domtest t = new domtest ();
try {
Vector v = t.readxmlfile (str);
Iterator it = V.iterator ();
while (It.hasnext ()) {
Student s = (student) it.next ();
System.out.println (S.getname () + "\ T" + s.getage () + "\ T"
+ S.getsex ());
}
} catch (Exception e) {
E.printstacktrace ();
}
String outfile = "Xml/stucopy.xml";
T.writexmlfile (outfile);
}
}
Class student{
Private String sex;
private String name;
private int age;
public int getage () {
return age;
}
public void Setage (int.) {
This.age = age;
}
public void Setsex (String s) {sex=s;}
Public String Getsex () {return sex;}
public void SetName (String n) {name=n;}
Public String GetName () {return name;}
}
Java read-write XML file