SAX-разбор - эффективный способ получить текстовые узлы

Учитывая этот фрагмент XML



   
      Gambardella, Matthew

В SAX легко получить значения атрибутов:

@Override
public void startElement (String uri, String localName,
              String qName, Attributes attributes) throws SAXException{
    if(qName.equals("book")){
        String bookId = attributes.getValue("id");
        ...
    }
}

Но чтобы получить значение текстового узла, например, значение тег, это довольно сложно ... я

private StringBuffer curCharValue = new StringBuffer(1024);

@Override
public void startElement (String uri, String localName,
              String qName, Attributes attributes) throws SAXException {
    if(qName.equals("author")){
        curCharValue.clear();
    }
}

@Override
public void characters (char ch[], int start, int length) throws SAXException
{
     //already synchronized
    curCharValue.append(char, start, length);
}

@Override
public void endElement (String uri, String localName, String qName)
throws SAXException
{
    if(qName.equals("author")){
        String author = curCharValue.toString();
    }
}
Я не уверен, что приведенный выше пример работает, что вы думаете об этом подходе?Есть ли способ лучше? (чтобы получить текстовый узел 'ценность)

Ответы на вопрос(2)

Ваш ответ на вопрос