[
Lists Home |
Date Index |
Thread Index
]
You can set the XMLWriter to be the receiving ContentHandler.
Code:
public class XMLCapitalizer {
public XMLCapitalizer(String infile, String outfile) {
try {
XMLReader eppReader =
XMLReaderFactory.createXMLReader("org.apache.xerces.parsers.SAXParser");
XMLFilter capfilter = new CapitalizerFilter(eppReader);
XMLWriter xmlwriter = new XMLWriter(new FileWriter(outfile));
capfilter.setContentHandler(xmlwriter);
capfilter.parse(infile);
}
catch (Exception e) {
e.printStackTrace();
}
}
Regards, Niels Peter
On lördag, december 22, 2001, at 07:26 , Cubeta, James wrote:
> hello,
>
>> -----Original Message-----
>> You need a ContentHandler (you can extend the
>> org.xml.sax.helpers.DefaultHandler). The ContentHandler is
>> the receiver of the events from the parser. The XMLFilter is
>> a filter that sits between a parser and a contenthandler and
>> allow you to filter the events between the parser and the
>> contenthandler. The parser "parses" the xml file into sax
>> events like startElement etc. The contenthandler is the
>> receiver of these events. Now what you do with the events is
>> up to you! you could build a DOM tree, or just do a pretty
>> print to you screen!
>
> thanks for the info and modified code, however i still cannot get it to
> work. i pretty much copied-n-pasted what you gave me into my program,
> but
> now it doesn't write *anything* to the output file! i'm sure i'm doing
> something really stupid, and i apologize for needed to be handheld. i
> guess
> i gotta read more...
>
> feeling really dumb,
> james
> ---------------------------------------------------------------------------
> James A. Cubeta
> jcubeta@verisign.com
> 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 updated code:
> -----------------------------------
>
> 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 =
> XMLReaderFactory.createXMLReader("org.apache.xerces.parsers.SAXParser");
> XMLWriter eppWriter = new XMLWriter(eppReader, new
> FileWriter(outfile));
> XMLFilter capfilter = new CapitalizerFilter(eppReader);
> ContentHandler capitalizer = new Capitalizer();
> capfilter.setContentHandler(capitalizer);
> capfilter.parse(infile);
> }
> catch (Exception e) {
> e.printStackTrace();
> }
> }
>
> // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>
> public static void main (String args[]) {
> if (args.length != 2) {
> System.out.println("usage: java XMLCapitalizer infile
> outfile");
> System.exit(0);
> }
> new XMLCapitalizer(args[0], args[1]);
> }
>
> // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>
> private class Capitalizer extends DefaultHandler {
> public void characters(char ch[], int start, int length) throws
> SAXException {
> String s = new String(ch, start, length);
> System.out.println("ch array is now: " + s);
> }
> }
>
> // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>
> private class CapitalizerFilter extends XMLFilterImpl {
> public CapitalizerFilter(XMLReader reader) {
> super(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);
> super.characters(ch,start,length);
> }
> }
> }
>
|