2010-04-04 19 views
0

J'essaye d'obtenir le contenu des étiquettes dans des variables dans mon parseur de java Sax. Toutefois, la méthode Characters renvoie uniquement les tableaux Char. Y at-il de toute façon pour obtenir le tableau Char dans un Int ???Sax Parser Character Array to Integer?

caractères public void (char ch [], start, int longueur) {

if(this.in_total_results) { 
     // my INT varialble would be nice here! 
    } 

}

Quelqu'un peut-il aider à tous?

Cordialement,

Andy

Répondre

3

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>&#49;&#50;&#51;</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.

+0

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 (..) –