Ho il seguente codice Java:il parsing di un file XML con uno schema DTD su un percorso relativo
DocumentBuilder db=DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc=db.parse(new File("/opt/myfile"));
E /opt/myfile
contiene qualcosa di simile:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE archive SYSTEM "../../schema/xml/schema.dtd"> ...
ottengo il seguente errore:
java.io.FileNotFoundException: /../schema/xml/schema.dtd (No such file or directory)
Questo è un grande framework java che consuma un file XML prodotto altrove. Penso che il percorso relativo sia il problema. Non penso che sia accettabile cambiare il cwd prima dell'avvio della JVM (il percorso proviene da un file di configurazione che viene letto dalla stessa JVM) e non ho trovato un modo per cambiare la cwd mentre la JVM è in esecuzione. Come analizzo questo file XML con il DTD appropriato?
oppure potrebbe utilizzare un risolutore basato su catalogo. –
Esempio di risolutore pronto all'uso: [org.hibernate.util.DTDEntityResolver] (http://stackoverflow.com/questions/10886453/hibernate-issue-with-using-http-www-hibernate-org-dtd) – Vadzim