//: xml/Person.java // Use the XOM library to write and read XML // {Requires: nu.xom.Node; You must install // the XOM library from http://www.xom.nu } import nu.xom.*; import java.io.*; import java.util.*; public class Person { private String first, last; public Person(String first, String last) { this.first = first; this.last = last; } // Produce an XML Element from this Person object: 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; } // Constructor to restore a Person from an XML Element: public Person(Element person) { first= person.getFirstChildElement("first").getValue(); last = person.getFirstChildElement("last").getValue(); } public String toString() { return first + " " + last; } // Make it human-readable: public static void format(OutputStream os, Document doc) throws Exception { Serializer serializer= new Serializer(os,"ISO-8859-1"); serializer.setIndent(4); serializer.setMaxLength(60); serializer.write(doc); serializer.flush(); } public static void main(String[] args) throws Exception { List people = Arrays.asList( new Person("Dr. Bunsen", "Honeydew"), new Person("Gonzo", "The Great"), new Person("Phillip J.", "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); } } /* Output: [Dr. Bunsen Honeydew, Gonzo The Great, Phillip J. Fry] Dr. Bunsen Honeydew Gonzo The Great Phillip J. Fry *///:~