|
Commons Digester example source code file (Main.java)
The Commons Digester Main.java source code
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import org.apache.commons.digester.Digester;
import org.apache.commons.digester.xmlrules.DigesterLoader;
import org.xml.sax.InputSource;
import java.net.URL;
/**
* A simple program to demonstrate the basic functionality of the
* Commons Digester module with the xmlrules extension.
* <p>
* This code will parse the provided "example.xml" file to build a tree
* of java objects, then cause those objects to print out their values
* to demonstrate that the input file has been processed correctly.
* <p>
* Unlike the "addressbook" example in the "api" section, this implementation
* has no parsing rules hard-wired into the code in this class. Instead, the
* parsing rules are loaded from an external file at runtime. This allows
* the parsing rules to be modified without compiling the code, and
* potentially makes it somewhat easier to review the parsing rules.
* <p>
* Note, however, that there is tyically quite a tight coupling between
* the parsing rules and the <i>purpose of the application which means
* that it may not be all that common for parsing rules to be altered
* without the application code also being altered, so only in some cases
* will this prove of benefit. As with all software, it must be determined
* whether this feature provides a true benefit in the context of the
* application it is being applied to.
* <p>
* Usage: java Main xmlrules.xml example.xml
*/
public class Main {
/**
* Main method : entry point for running this example program.
* <p>
* Usage: java Example example.xml
*/
public static void main(String[] args) throws Exception {
if (args.length != 2) {
usage();
System.exit(-1);
}
String rulesfileName = args[0];
String datafileName = args[1];
// Create a Digester instance which has been initialised with
// rules loaded from the specified file.
URL rulesURL = ClassLoader.getSystemResource(rulesfileName);
if (rulesURL == null) {
System.out.println("Unable to find rules file.");
System.exit(-1);
}
Digester d = DigesterLoader.createDigester(rulesURL);
// Prime the digester stack with an object for rules to
// operate on. Note that it is quite common for "this"
// to be the object pushed.
AddressBook book = new AddressBook();
d.push(book);
// Process the input file.
try {
java.io.File srcfile = new java.io.File(datafileName);
d.parse(srcfile);
}
catch(java.io.IOException ioe) {
System.out.println("Error reading input file:" + ioe.getMessage());
System.exit(-1);
}
catch(org.xml.sax.SAXException se) {
System.out.println("Error parsing input file:" + se.getMessage());
System.exit(-1);
}
// Print out all the contents of the address book, as loaded from
// the input file.
book.print();
}
private static void usage() {
System.out.println("Usage: java Main xmlrules.xml example.xml");
}
}
Other Commons Digester examples (source code examples)Here is a short list of links related to this Commons Digester Main.java source code file: |
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.