2015-11-11 20:20:04 -08:00
|
|
|
// serialization/APerson.java
|
2021-01-31 15:42:31 -07:00
|
|
|
// (c)2021 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
|
2017-01-22 16:48:11 -08:00
|
|
|
// nu.xom.Node comes 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;
|
|
|
|
}
|
2017-01-22 16:48:11 -08:00
|
|
|
// Constructor restores a APerson from XML:
|
2015-06-15 17:47:35 -07:00
|
|
|
public APerson(Element person) {
|
2017-01-22 16:48:11 -08:00
|
|
|
first = person
|
|
|
|
.getFirstChildElement("first").getValue();
|
|
|
|
last = person
|
|
|
|
.getFirstChildElement("last").getValue();
|
2015-06-15 17:47:35 -07:00
|
|
|
}
|
2021-01-31 15:42:31 -07:00
|
|
|
@Override public String toString() {
|
2017-01-22 16:48:11 -08:00
|
|
|
return first + " " + last;
|
|
|
|
}
|
2015-06-15 17:47:35 -07:00
|
|
|
// Make it human-readable:
|
|
|
|
public static void
|
2017-01-22 16:48:11 -08:00
|
|
|
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
|
|
|
*/
|