當我們擴展DefaultHandler時,通常會覆蓋字符函數。使用java字符串的效率
我想知道這將是一個更有效的方式來提取所提供的字符串...
會是使用for循環和一個StringBuilder?
@Override public void characters(char[] ch, int start, int length) throws SAXException { StringBuilder sb = new StringBuilder(length); for(int i=start; i<start+length; i++) sb.append(ch[i]); String values = sb.toString(); }
難道是用一個簡單的字符串?
@Override public void characters(char[] ch, int start, int length) throws SAXException { String values = (new String(ch)).substring(start, start + length); }
難道還有其他的方法嗎?
**請注意** #characters(char [] ch,int,int)'方法*可能會在一行中被多次調用,您應該**將**字符數據添加到' StringBuilder'類成員,不處理直到你點擊相關的'#endElement(String,String,String)'調用。追加字符應該通過調用'StringBuilder#append(char [],int,int)'來完成。 – Jens
@Jens你是對的!我一直在與飼料工作了很多,我注意到了這種行爲。問題是使用StringBuilder追加(特別是維護引用的部分)會太麻煩。在這種情況下,我更喜歡使用字符串連接。 –
如果你正在手動實現'ContentHandler',你應該考慮使用某種框架 - 即使像[android.sax](http://stackoverflow.com/a/10768314/967142)中內置的簡單框架可能會簡單的事情給你。 – Jens