Làm cách nào tôi có thể bỏ qua khai báo DTD khi phân tích tệp bằng thư viện XOM xml. Tệp của tôi có dòng sau:Bỏ qua DTD khi phân tích cú pháp XML
<?xml version="1.0"?>
<!DOCTYPE BlastOutput PUBLIC "-//NCBI//NCBI BlastOutput/EN" "NCBI_BlastOutput.dtd">
//rest of stuff here
Và khi tôi cố gắng xây dựng() tài liệu của tôi, tôi nhận được ngoại lệ filenotfound cho tệp DTD. Tôi biết tôi không có tập tin này và tôi không quan tâm về nó, vì vậy làm thế nào nó có thể được gỡ bỏ khi sử dụng XOM?
Đây là một đoạn mã:
public BlastXMLParser(String filePath) {
Builder b = new Builder(false);
//not a good idea to have exception-throwing code in constructor
try {
_document = b.build(filePath);
} catch (ParsingException ex) {
Logger.getLogger(BlastXMLParser.class.getName()).log(Level.SEVERE,"err", ex);
} catch (IOException ex) {
//
}
private Elements getBlastReads() {
Element root = _document.getRootElement();
Elements rootChildren = root.getChildElements();
for (int i = 0; i < rootChildren.size(); i++) {
Element child = rootChildren.get(i);
if (child.getLocalName().equals("BlastOutput_iterations")) {
return child.getChildElements();
}
}
return null;
}
}
tôi nhận được một NullPointerException tại dòng này:
Element root = _document.getRootElement();
Với dòng DTD lấy ra từ tập tin nguồn XML Tôi thành công có thể phân tích nó, nhưng điều này không phải là một lựa chọn trong hệ thống sản xuất cuối cùng.
Bạn có thể hiển thị 'mã' được sử dụng để phân tích cú pháp không? – bbaja42