class Example6Circle extends DefaultHandler {
     // 本地当前circle引用...         private Circle   currentCircle;
     // Parent...    ContentHandler parent;
     // XML 解析器    XMLReader parser;
    // 从"characters" SAX事件中收集数据的缓存。    private CharArrayWriter contents = new CharArrayWriter();
     public void collectCircle( XMLReader parser,                ContentHandler parent,                Circle newCircle ) {       this.parent = parent;       this.parser = parser;       parser.setContentHandler( this );       currentCircle = newCircle;    }
    // 重载DefaultHandler类以拦截SAX事件的方法。    //         // 头于所有有效事件的详细内容,参见org.xml.sax.ContentHandler。    //    public void startElement( String namespaceURI,                String localName,               String qName,               Attributes attr ) throws SAXException {       contents.reset();    }
     public void endElement( String namespaceURI,                String localName,               String qName ) throws SAXException {
        if ( localName.equals( "x" ) ) {                           currentCircle.x =                              Integer.valueOf                             (contents.toString().trim()).intValue();       }
        if ( localName.equals( "y" ) ) {                           currentCircle.y =                                Integer.valueOf                               (contents.toString().trim()).intValue();       }
        if ( localName.equals( "width" ) ) {                           currentCircle.width =                              Integer.valueOf                             (contents.toString().trim()).intValue();       }
        if ( localName.equals( "height" ) ) {                           currentCircle.height =                               Integer.valueOf                              (contents.toString().trim()).intValue();       }
        if ( localName.equals( "Circle" ) ) {                     // 把内容处理器(content handler)换回成parent          parser.setContentHandler(parent);       }
     }
     public void characters( char[] ch, int start, int length )                   throws SAXException {       // 从"characters" SAX事件中收集数据的缓存。       contents.write( ch, start, length );
     }
  }
  class Example6Square extends DefaultHandler {
     // 当前长方形本地引用...
          private Square   currentSquare;
     // Parent...    ContentHandler parent;
     // XML 解析器    XMLReader parser;
    // 从"characters" SAX事件中收集数据的缓存。    private CharArrayWriter contents = new CharArrayWriter();
 
     public void collectSquare( XMLReader parser,                ContentHandler parent,                Square newSquare ) {       this.parent = parent;       this.parser = parser;       parser.setContentHandler( this );       currentSquare = newSquare;    }
 
    // 重载DefaultHandler类以拦截SAX事件的方法。    //         // 头于所有有效事件的详细内容,参见org.xml.sax.ContentHandler。    //    public void startElement( String namespaceURI,                String localName,               String qName,               Attributes attr ) throws SAXException {
        contents.reset();
     }
     public void endElement( String namespaceURI,                String localName,               String qName ) throws SAXException { 
      if ( localName.equals( "x" ) ) {                           currentSquare.x = Integer.valueOf                              (contents.toString().trim()).intValue();       }
        if ( localName.equals( "y" ) ) {                           currentSquare.y = Integer.valueOf                              (contents.toString().trim()).intValue();       }
        if ( localName.equals( "width" ) ) {                           currentSquare.width = Integer.valueOf                              (contents.toString().trim()).intValue();       }
        if ( localName.equals( "height" ) ) {                           currentSquare.height = Integer.valueOf                              (contents.toString().trim()).intValue();       }
        if ( localName.equals( "Square" ) ) {                     // 把内容处理器(content handler)换回成parent          parser.setContentHandler(parent);       }    }
     public void characters( char[] ch, int start, int length )                   throws SAXException {      // 从"characters" SAX事件中收集数据到缓存。       contents.write( ch, start, length );
     }
 
  } (未完待续)  
 
  |