Tôi đã sử dụng jdom để xác thực xml dựa trên lược đồ. Vấn đề chính là ở đó mà nó mang lại một lỗitrình xác thực xml nào sẽ hoạt động hoàn hảo cho dự án đa luồng
FWK005 phân tích cú pháp có thể không được gọi trong khi phân tích
Lý do chính là bội số của bài làm việc để xác nhận xerces cùng một lúc. SO tôi đã nhận được giải pháp mà tôi phải khóa xác nhận đó. đó là không tốt
Vì vậy, tôi muốn biết xml validator hoạt động hoàn hảo cho đa luồng dự án
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;
}
Cảm ơn Sunil Kumar Sahoo
+1 - nhưng tùy chọn đầu tiên chỉ đơn giản là tạo trình xác thực mới mỗi lần bạn cần. (Các tùy chọn hiện có là tối ưu hóa hiệu suất, và chỉ nên được xem xét nếu bạn * biết chắc chắn * rằng việc tạo ra các cá thể validator sẽ là một nút cổ chai hiệu suất.) –
Điểm rất tốt ở trên từ Stephen C. – Dave