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 );
}
} (未完待续) 
|