2013-03-26 34 views
2

我有一個Servlet需要處理大約2 MB大小的Http響應文檔中的1個XML元素,並返回元素內到客戶端的內容。目前我正在這樣做字符串搜索的性能

if (response.indexOf("<?xml") != -1 
       && response.indexOf("</Data>") != -1) { 
      return response.substring(response.indexOf("<?xml"), 
        response.indexOf("</Data>") + 7); 

只是想知道這是否是最有效的搜索標籤或有沒有更好的方法可用。

+0

嘗試用正則表達式,這將是在這種情況下一個更好的辦法。 – 2013-03-26 03:37:52

+0

這很好,但爲什麼不使用一些Xml解析庫呢? – smk 2013-03-26 03:39:31

+0

你沒有處理XML,我的意思是個別的XML元素,因此可能不需要解析器。 – 2013-03-26 03:43:05

回答

1

這是不可能的,你將能夠加快由許多算法,因爲只有「出師不利」的是IndexOf將沿途</Data>將是結束標記找到,而<?xml發現非常接近文件開始。

一個加快你的代碼的方法是避免調用IndexOf多次:

int idxXml = response.indexOf("<?xml"); 
int idxData = response.indexOf("</Data>"); 
if (idxXml != -1 && idxData != -1) { 
    return response.substring(idxXml, idxData+7); 
} 
+0

+1但var應該是int,它是Java – 2013-03-26 04:04:47

+0

@EvgeniyDorofeev謝謝!最近我一直在做太多的C# – dasblinkenlight 2013-03-26 04:13:10