/**序列化**/
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.Arrays;
import java.util.List;
import nu.xom.Document;
import nu.xom.Element;
import nu.xom.Serializer;
public class Person {
private String first , last;
public Person(String first, String last){
this.first = first;
this.last = last;
}
public Element getXML(){
Element person = new Element("person");
Element firstName = new Element("first");
firstName.appendChild(first);
Element lastName = new Element("last");
lastName.appendChild(last);
person.appendChild(firstName);
person.appendChild(lastName);
return person;
}
public Person(Element person){
first = person.getFirstChildElement("first").getValue();
last = person.getFirstChildElement("last").getValue();
}
public String toString(){
return first + " " + last;
}
public static void format(OutputStream os,Document doc)throws Exception{
Serializer serializer = new Serializer(os,"UTF-8");
serializer.setIndent(4);//怎么缩进
serializer.setMaxLength(600);
serializer.write(doc);//写出
serializer.flush();//清空缓存
}
public static void main(String[] args) throws Exception {
List<Person> people = Arrays.asList(new Person("Dr . Bunsen","Honeydew"),new Person("Gonzo", "The Great"),new Person("Phillip", "Fry"));
System.out.println(people);
Element root = new Element("people");
for(Person p : people){
root.appendChild(p.getXML());
}
Document doc = new Document(root);
format(System.out, doc);
format(new BufferedOutputStream(new FileOutputStream("People.xml")), doc);
}
}
/**反序列化**/
import java.io.IOException;
import java.util.ArrayList;
import nu.xom.Builder;
import nu.xom.Document;
import nu.xom.Elements;
import nu.xom.ParsingException;
import nu.xom.ValidityException;
public class People extends ArrayList<Person>{
public People(String xmlFile) throws ValidityException, ParsingException, IOException{
Document document = new Builder().build(xmlFile);
Elements eles = document.getRootElement().getChildElements();
for(int i = 0 ; i < eles .size(); i++){
add(new Person(eles.get(i)));
}
}
public static void main(String[] args) throws ValidityException, ParsingException, IOException {
People people = new People("People.xml");
System.out.println(people);
}
}