[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

XML, Java, & filters question...

xmlreader xmlwriter java
hello again,

i am trying to write a very simple Java app to demonstrate the use of SAX
filters on XML. i am new to XML, and i am reading Brett McLaughlin's "Java &
XML" [O'Reilly]. i am also using the Xerces 1.0 parser from Apache and
Megginson's add-on XMLWriter class.

here is all i want to do: read in an XML document and, when i encounter data
between tags, capitalize it. to paraphrase my code, here is what i am doing:

   1. create an XMLReader
   2. create an XMLWriter, which is chained to the reader and a FileWriter
   3. create a filter object with the writer
   4. create an InputSource 
   5. tell the filter to parse the InputSource object

my custom filter extends the XMLFilterImpl class and overrides the
characters() method. i have included my code below. it compiles and executes
just fine, and seems to behave appropriately, but the generated output file
is unchanged.

what am i doing wrong here?

thanks in advance for your help - sorry if this is too much of an
entry-level topic for this list!

happy holidays,
James A. Cubeta                                        jcubeta@v...
VeriSign Global Registry Services                           v: 703.948.3326
21345 Ridgetop Circle, #LS2-2-1                             f: 703.421.8709
Dulles, VA 20166                                       www.verisign-grs.com

my input file:
<?xml version="1.0"?>
<data>convert this to all caps, please!</data>

my source code:

// compile: javac XMLCapitalizer.java
// run: java XMLCapitalizer infile outfile

import java.io.FileWriter;
import org.xml.sax.*;
import org.xml.sax.helpers.*;
import com.megginson.sax.*;

public class XMLCapitalizer {   
   public XMLCapitalizer(String infile, String outfile) {
      try {
         XMLReader eppReader =
         XMLWriter eppWriter  = new XMLWriter(eppReader, new
         CapitalizerFilter filter = new CapitalizerFilter(eppWriter);
         InputSource source  = new InputSource(infile);
      catch (Exception e) {
   // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   public static void main (String args[]) {
      if (args.length != 2) {
         System.out.println("usage: java XMLCapitalizer infile outfile");
      new XMLCapitalizer(args[0], args[1]);  
   // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   private class CapitalizerFilter extends XMLFilterImpl {
      public CapitalizerFilter(XMLReader reader) {
      public void characters(char ch[], int start, int length) 
      throws SAXException {
         for (int i = start; i < length; i++) {
            if (Character.isLowerCase(ch[i])) {
               ch[i] = Character.toUpperCase(ch[i]);
         String s = new String(ch, start, length);
         System.out.println("ch array is now: " + s);


Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
First Name
Last Name
Subscribe in XML format
RSS 2.0
Atom 0.3

Stylus Studio has published XML-DEV in RSS and ATOM formats, enabling users to easily subcribe to the list from their preferred news reader application.

Stylus Studio Sponsored Links are added links designed to provide related and additional information to the visitors of this website. they were not included by the author in the initial post. To view the content without the Sponsor Links please click here.

Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.