2013-02-03 101 views
0

我有一個將xml字符串發送到輸出流的應用程序。在將內容寫入輸出流之前,我必須確保文本節點中的內容(節點值中的內容)不超過固定長度。爲此,我編寫了一個示例代碼來獲取可幫助我進行內容驗證的文本節點內容。但是我擔心這個示例代碼是有效的,因爲當我運行eclipse profiler(TPTP)時需要約0.2秒。我想知道是否有更好的方法來改善性能。以下是示例代碼。在java中將字符串快速轉換爲xml

StringWriter stringWriter = new StringWriter(); 
    stringWriter.write("<node src='something'>nodetext goes here</node>"); 
    InputSource src = new InputSource(new StringReader(stringWriter.toString())); 
    try { 
     Element doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(src).getDocumentElement(); 
     System.out.println(doc.getChildNodes().getLength()); 
     Node n = doc.getChildNodes().item(0); 
     System.out.println(n.getNodeValue()); 
    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
+0

嘗試探索其他庫,如nano解析器或其他解析技術(如Stax或SAX)。無法指向任何特定的技術。因爲你在這裏給出的問題非常少。 – Prateek

回答

1

通過重用DocumentBuilderFactory,您將獲得巨大的性能提升 - 創建工廠涉及到搜索類路徑。重用DocumentBuilder也可能會有所幫助。然而,將XML創建爲字符串,解析並再次對其進行分離的整體方法似乎本質上是低效的,並且我還沒有真正理解您爲何需要的解釋。

+0

這是我的應用程序可能會建議一個更好的方法。我的網絡應用程序向瀏覽器發送xml響應。我必須攔截響應,以確保xml標記中的文本內容不會超過一定的長度。這就是我試圖解析XML字符串截斷文本內容的原因,如果有的話。我無法更改生成xml字符串的機制。你能想出更好的方法嗎? –

+0

我總是懷疑有人說「我不能改變X」。這些爭論導致軟件結構衰退。我會挑戰這個假設 - 但這不是我的項目。 –