Pour être vraiment correct, vous devez accumuler la valeur passée en caractères, car il peut être appelé plus d'une fois par étiquette.
Cela peut notamment arriver si vous avez des entités dans le texte. Une étiquette telle que <a>123</a>
est équivalente à <a>123</a>
(49,50,51 sont des exemples, mais je pense que ce sont les bons codes pour 1,2,3)
Voici un extrait tiré de this question:
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();
}
}
Pour convertir de StringBuffer
en int, utilisez simplement new Integer(curCharValue.toString())
. Notez qu'il existe d'autres méthodes pour convertir String
en Integer
ou int
, comme indiqué dans le commentaire.
Bonne réponse, je préfère Integer.parseInt (..) à un nouvel entier (...), car il renvoie un 'int' plutôt qu'un 'Integer', et est plus efficace. Si un entier était requis, j'utiliserais Integer.valueOf (..) –