11.10 Map

This commit is contained in:
2018-06-17 19:26:58 +08:00
commit c47f63d484
879 changed files with 39735 additions and 0 deletions

22
xml/People.java Normal file
View 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
View 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
View 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>