我已經使用jdom進行了針對模式的xml驗證。主要問題有,它提供了一個錯誤在解析哪個xml驗證器可以很好地用於多線程項目
的主要原因是在同一時間對於Xerces,驗證工作線程的多個
FWK005解析可能不會被調用。所以我得到了我必須鎖定驗證的解決方案。這是不好的
所以我想知道哪些XML驗證完全適用於多線程項目
public static HashMap<String, String> validate(String xmlString, Validator validator) {
HashMap<String, String> map = new HashMap<String, String>();
long t1 = System.currentTimeMillis();
DocumentBuilder builder = null;
try {
//obtain lock to proceed
// lock.lock();
try {
builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
// Source source = new DOMSource(builder.parse(new ByteArrayInputStream(xmlString.getBytes())));
validator.validate(new StreamSource(new StringReader(xmlString)));
map.put("ISVALID", "TRUE");
logger.info("We have successfuly validated the schema");
} catch (Exception ioe) {
ioe.printStackTrace();
logger.error("NOT2 VALID STRING IS :" + xmlString);
map.put("MSG", ioe.getMessage());
// logger.error("IOException while validating the input XML", ioe);
}
logger.info(map);
long t2 = System.currentTimeMillis();
logger.info("XML VALIDATION TOOK:::" + (t2 - t1));
} catch (Exception e) {
logger.error(e);
} finally {
//release lock
// lock.unlock();
builder = null;
}
return map;
}
感謝 蘇尼爾·庫馬爾Sahoo
+1 - 但第一個選項應該只是簡單地創建一個新的驗證器,每次你需要一個。 (現有的選項是性能優化,只有在您確實知道驗證器實例的創建將會成爲性能瓶頸時才應考慮。) – 2010-05-02 04:06:47
Stephen C.以上非常好的一點 – Dave 2010-05-02 14:07:50