XOM XMLライブラリでファイルを解析するときにDTD宣言を無視する方法を教えてください。私のファイルには、次の行があります。XMLを解析するときにDTDを無視する
<?xml version="1.0"?>
<!DOCTYPE BlastOutput PUBLIC "-//NCBI//NCBI BlastOutput/EN" "NCBI_BlastOutput.dtd">
//rest of stuff here
をそして、私は)(私の文書を構築しようとすると、DTDファイル用にFileNotFound例外を取得します。私はこのファイルを持っていないことを知っていて、気にしないので、XOMを使用するときにどのように削除できますか?私はこのラインでNullPointerExceptionが取得
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;
}
}
:ここ
は、コードスニペットで私は成功し、それを解析することができ、ソースのXMLファイルから削除DTDラインでElement root = _document.getRootElement();
が、これを最終的な生産システムではオプションではありません。
解析に使用する 'code'を表示できますか? – bbaja42