上書きされたSAXコールバックメソッドで文字列バッファを更新した後、文字列バッファが空である理由を理解するのに助けが必要です。私のコード:
public class SAXXMLParser extends DefaultHandler
{
SAXParserFactory factory;
SAXXMLParser dh;
SAXParser sax;
StringBuffer accumulator;
String remember = "";
public String saxParse( String msgToParse, String uriPathExpression )
throws SAXException, IOException, ParserConfigurationException
{
System.out.println( "saxParse" );
factory = SAXParserFactory.newInstance();
sax = factory.newSAXParser();
dh = new SAXXMLParser();
InputStream is = new ByteArrayInputStream( msgToParse.getBytes() );
sax.parse( is , dh );
System.err.println( remember );
return remember;
}
public void startElement( String uri, String localName, String elementName, Attributes attrs )
{
accumulator.setLength(0);
}
public void endElement( String uri, String name, String qName )
{
System.out.println( qName );
if( qName.equalsIgnoreCase( "my element" ) )
{
remember = accumulator.toString();
}
}
public void characters( char[] ch, int start, int len )
{
accumulator.append( ch, start, len );
}
public void startDocument()
{
accumulator = new StringBuffer();
}
}
別のクラスでは、文字列が返されることを期待してSAXXMLParser.saxParse(string、string)を呼び出します(覚えておいてください)が、rememberは常にnullです。