11.10 Map
This commit is contained in:
22
xml/People.java
Normal file
22
xml/People.java
Normal file
@@ -0,0 +1,22 @@
|
||||
//: xml/People.java
|
||||
// {Requires: nu.xom.Node; You must install
|
||||
// the XOM library from http://www.xom.nu }
|
||||
// {RunFirst: Person}
|
||||
import nu.xom.*;
|
||||
import java.util.*;
|
||||
|
||||
public class People extends ArrayList<Person> {
|
||||
public People(String fileName) throws Exception {
|
||||
Document doc = new Builder().build(fileName);
|
||||
Elements elements =
|
||||
doc.getRootElement().getChildElements();
|
||||
for(int i = 0; i < elements.size(); i++)
|
||||
add(new Person(elements.get(i)));
|
||||
}
|
||||
public static void main(String[] args) throws Exception {
|
||||
People p = new People("People.xml");
|
||||
System.out.println(p);
|
||||
}
|
||||
} /* Output:
|
||||
[Dr. Bunsen Honeydew, Gonzo The Great, Phillip J. Fry]
|
||||
*///:~
|
||||
72
xml/Person.java
Normal file
72
xml/Person.java
Normal file
@@ -0,0 +1,72 @@
|
||||
//: 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<Person> 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]
|
||||
<?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>
|
||||
*///:~
|
||||
86
xml/build.xml
Normal file
86
xml/build.xml
Normal file
@@ -0,0 +1,86 @@
|
||||
<?xml version="1.0" ?>
|
||||
|
||||
<project
|
||||
basedir="."
|
||||
default="run"
|
||||
name="Thinking in Java, 4th Edition by Bruce Eckel (chapter: xml)">
|
||||
|
||||
<description>
|
||||
build.xml for the source code for the xml chapter of
|
||||
Thinking in Java, 4th Edition by Bruce Eckel
|
||||
Source code available at http://www.MindView.net
|
||||
See copyright notice in CopyRight.txt
|
||||
|
||||
Ant available from: http://jakarta.apache.org/ant
|
||||
|
||||
To see options, type: ant -p
|
||||
|
||||
This file was automatically generated by AntBuilder
|
||||
</description>
|
||||
|
||||
<condition property="version1.5">
|
||||
<equals arg1="1.5" arg2="${ant.java.version}"/>
|
||||
</condition>
|
||||
|
||||
<available classname="nu.xom.Node" property="nu.xom.Node"/>
|
||||
|
||||
<target
|
||||
depends=""
|
||||
description="Build all classes in this directory"
|
||||
name="build">
|
||||
<fail message="J2SE5 required" unless="version1.5"/>
|
||||
<fail
|
||||
Unless="nu.xom.Node"
|
||||
message="You must install the XOM library from http://www.xom.nu"/>
|
||||
<echo message="Building 'xml'"/>
|
||||
<javac
|
||||
classpath="${basedir}/.."
|
||||
debug="true"
|
||||
srcdir="${basedir}">
|
||||
<compilerarg value="-Xmaxerrs"/>
|
||||
<compilerarg value="10"/>
|
||||
</javac>
|
||||
<echo message="Build 'xml' succeeded"/>
|
||||
</target>
|
||||
|
||||
<target depends="Person" name="People">
|
||||
<java
|
||||
classname="People"
|
||||
classpath="${java.class.path};${basedir};${basedir}/.."
|
||||
dir="../xml/"
|
||||
failonerror="true"
|
||||
fork="true"/>
|
||||
</target>
|
||||
|
||||
<target name="Person">
|
||||
<java
|
||||
classname="Person"
|
||||
classpath="${java.class.path};${basedir};${basedir}/.."
|
||||
dir="../xml/"
|
||||
failonerror="true"
|
||||
fork="true"/>
|
||||
</target>
|
||||
|
||||
<target
|
||||
depends="build"
|
||||
description="Compile and run"
|
||||
name="run">
|
||||
<touch file="failures"/>
|
||||
<antcall target="People"/>
|
||||
<antcall target="Person"/>
|
||||
<delete file="failures"/>
|
||||
</target>
|
||||
|
||||
<target description="delete all byproducts" name="clean">
|
||||
<delete>
|
||||
<fileset dir="${basedir}" includes="**/*.class"/>
|
||||
<fileset dir="${basedir}" includes="**/*Output.txt"/>
|
||||
<fileset dir="${basedir}" includes="**/log.txt"/>
|
||||
<fileset dir="${basedir}" includes="failures"/>
|
||||
</delete>
|
||||
<echo message="clean successful"/>
|
||||
</target>
|
||||
|
||||
</project>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user