Resolver DTD no Digester

0 respostas
Luca

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());
Meu EntityResolver:
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");
	}
}
Meu xml:
<?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>
Erro que recebo:
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

Criado 3 de maio de 2004
Respostas 0
Participantes 1