The XML file containing the DVD library
The simplest operations you can carry out on a document tree are
create, update or delete an element. To show you how to do
this I'll need a simple XML-structure, and the example from
my SAX-article
will do fine (an attribute "id" has been added to cover handling
attributes as well):
<?xml version = "1.0" ?>
<collection>
<dvd id="A">
<title>Lord of the Rings: The Fellowship of the Ring</title>
<length>178</length>
<actor>Ian Holm</actor>
<actor>Elijah Wood</actor>
<actor>Ian McKellen</actor>
</dvd>
<dvd id="B">
<title>The Matrix</title>
<length>136</length>
<actor>Keanu Reeves</actor>
<actor>Laurence Fishburne</actor>
</dvd>
<dvd id="C">
<title>Amadeus</title>
<length>158</length>
<actor>F. Murray Abraham</actor>
<actor>Tom Hulce</actor>
<actor>Elizabeth Berridge</actor>
</dvd>
</collection>
|
The examples below will now show how to manipulate the DVD-elements
in the structure. All DVDs are first stored in a List like this:
List dvds = doc.getRootElement().getChildren();
Creating a new dvd-Element in the tree
A new element is created like this:
Element dvd = new Element("dvd");
and the title and length can now be added:
dvd.addContent(new Element("title").setText(title));
dvd.addContent(new Element("length").setText(length));
"addContent" is an important method in the Element class. Even
if I won't cover these subjects, it might be nice for you to know
that addContent is also used to add XML-comments, Processing
Instructions and other information to an Element.
To add the id-attribute we need an instance of the Attribute class:
dvd.setAttribute(new Attribute("id", id));
Adding actors is just like adding a title or length--we simply
use addContents once for every actor. Let's wrap the code into a
general method:
public void createDVD(String id, String title, String length, List actors) {
Element dvd = new Element("dvd");
dvd.setAttribute(new Attribute("id", id));
dvd.addContent(new Element("title").setText(title));
dvd.addContent(new Element("length").setText(length));
for (int i = 0; i < actors.size(); i++) {
dvd.addContent(new Element("actor").setText((String)actors.get(i)));
}
dvds.add(dvd);
}
Note that JDOM now benefits from building on the List-Interface
by using its add-method. There's no need for a special JDOM method
for this purpose.
Updating a dvd-Element in the tree
Setting a new title or length is straightforward:
Element dvd = . . .
dvd.getChild("title").setText(title);
dvd.getChild("length").setText(length);
The value of the id-attribute is set like this:
dvd.getAttribute("id").setValue(id);
Updating the list of actors is most easily done by first removing
all actors and then adding the updated list of actors. We'll wrap
it up like this:
public void updateDVD(int index, String id, String title, String length,
List actors) {
Element dvd = (Element)dvds.get(index);
dvd.getAttribute("id").setValue(id);
dvd.getChild("title").setText(title);
dvd.getChild("length").setText(length);
dvd.removeChildren("actor");
for (int i = 0; i < actors.size(); i++) {
dvd.addContent(new Element("actor").setText((String)actors.get(i)));
}
}
In the code the dvd Element is located by its index in the List.
Deleting a dvd-Element
This is the easy part. Let's reveal the delete-method right away:
public void deleteDVD(int index) {
dvds.remove(index);
}
Again we simply use one of the methods from the List interface
for the operation.
To test handling of the DVDs I've made a
DVDHandler class.
that can be called from the command line.
The main method includes various calls to the create, update, and delete methods.
New on the Java Boutique:
New Review:
Time Management Made Easy with the Quartz Enterprise Job Scheduler
Why not just use the Java timer API? This open source scheduling
API boasts simplicity, ease-of-integration, a well-rounded feature
set, and it's free!
New Applet:
Reverse Complement
Reverse Complement is a simple applet that converts DNA or RNA
sequences into three useful formats.
Elsewhere on internet.com:
WebDeveloper Java
Lots of Java information on webdeveloper.com
WDVL Java
Thorough Java resource at the Web Developer's Virtual Library.
ScriptSearch Java
Hundreds of free Java code files to download.
jGuru: Your View of the Java Universe
Customizable portal with online training, FAQs, regular news updates, and tutorials.
|