Olá
Tento criar um resolver para localizar um arquivo DTD local na hora de parsear o XML que recebo do cliente. Estou fazendo assim:Digester digester = new Digester();
digester.setEntityResolver(new XXXResolver());
public class XXXResolver implements EntityResolver{
public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException {
return new InputSource( System.getProperty("file.separator") + "lote_recebido.dtd");
}
}
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE od SYSTEM "lote_recebido.dtd">
<od ident="1237">
<XXX tipo="N">
<inicio>XX010010014E</inicio>
<fim>XX010011002E</fim>
</XXX>
</od>
3/05/2004 14:37:03 org.apache.commons.digester.Digester fatalError
SEVERE: Parse Fatal Error at line 2 column -1: Relative URI "lote_recebido.dtd"; can not be resolved without a base URI.
org.xml.sax.SAXParseException: Relative URI "lote_recebido.dtd"; can not be resolved without a base URI.
at org.apache.crimson.parser.Parser2.fatal(Unknown Source)
Alguém sabe o porque disto?
Ou então alguém sabe o que fazer para usar o DTD local com o XML recebido do cliente?
[]s
Luca