2010-04-04 59 views
0

我想在我的java sax解析器中將標記的內容變成變量。但是,字符方法只返回字符數組。反正有沒有把Char數組變成Int?薩克斯解析器字符數組整數?

公共無效字符(字符CH [],詮釋開始,詮釋 長度){

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

}

誰能幫助呢?

親切的問候,

安迪

回答

3

要真正正確的,你需要積累值中的字符傳遞,因爲它可以不同於每個標籤一次。

如果您在文本中有實體,則可能會發生這種情況。如<a>&#49;&#50;&#51;</a>的標籤相當於<a>123</a>(49,50,51是說明性的,但我認爲這是正確的代碼1,2,3)

因此,這裏是從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(); 
    } 
} 

要從StringBuffer轉換爲int,只需使用new Integer(curCharValue.toString())。請注意,還有其他方法可將String轉換爲Integerint,正如評論中指出的那樣。

+0

好的答案,我寧願Integer.parseInt(..)到新的Integer(...),因爲它返回一個'int'而不是'Integer',並且效率更高。如果需要整數,我會使用Integer.valueOf(..) – 2010-04-04 20:40:41