81 lines
2.3 KiB
Java
Raw Normal View History

// serialization/APerson.java
2016-12-30 17:23:13 -08:00
// (c)2017 MindView LLC: see Copyright.txt
2015-11-15 15:51:35 -08:00
// We make no guarantees that this code is fit for any purpose.
2016-09-23 13:23:35 -06:00
// Visit http://OnJava8.com for more book information.
2015-06-15 17:47:35 -07:00
// Use the XOM library to write and read XML
2016-07-14 12:32:20 -06:00
// You must install nu.xom.Node from http://www.xom.nu
2015-06-15 17:47:35 -07:00
import nu.xom.*;
import java.io.*;
import java.util.*;
public class APerson {
private String first, last;
public APerson(String first, String last) {
this.first = first;
this.last = last;
}
// Produce an XML Element from this APerson 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;
}
2016-01-25 18:05:55 -08:00
// Constructor restores a APerson from an XML Element:
2015-06-15 17:47:35 -07:00
public APerson(Element person) {
2016-01-25 18:05:55 -08:00
first =
person.getFirstChildElement("first").getValue();
last =
person.getFirstChildElement("last").getValue();
2015-06-15 17:47:35 -07:00
}
@Override
public String toString() { return first + " " + last; }
// Make it human-readable:
public static void
format(OutputStream os, Document doc) throws Exception {
2016-01-25 18:05:55 -08:00
Serializer serializer =
new Serializer(os,"ISO-8859-1");
2015-06-15 17:47:35 -07:00
serializer.setIndent(4);
serializer.setMaxLength(60);
serializer.write(doc);
serializer.flush();
}
2016-01-25 18:05:55 -08:00
public static void
main(String[] args) throws Exception {
2015-06-15 17:47:35 -07:00
List<APerson> people = Arrays.asList(
new APerson("Dr. Bunsen", "Honeydew"),
new APerson("Gonzo", "The Great"),
new APerson("Phillip J.", "Fry"));
System.out.println(people);
Element root = new Element("people");
for(APerson p : people)
root.appendChild(p.getXML());
Document doc = new Document(root);
format(System.out, doc);
2016-01-25 18:05:55 -08:00
format(new BufferedOutputStream(
new FileOutputStream("People.xml")), doc);
2015-06-15 17:47:35 -07:00
}
2015-09-07 11:44:36 -06:00
}
/* Output:
2015-06-15 17:47:35 -07:00
[Dr. Bunsen Honeydew, Gonzo The Great, Phillip J. Fry]
<?xml version="1.0" encoding="ISO-8859-1"?>
<people>
<person>
<first>Dr. Bunsen</first>
<last>Honeydew</last>
</person>
<person>
<first>Gonzo</first>
<last>The Great</last>
</person>
<person>
<first>Phillip J.</first>
<last>Fry</last>
</person>
</people>
2015-09-07 11:44:36 -06:00
*/