Bonjour,
Voila j'ai un petit probleme de parsing XML.
Mes documents xml comportent un declaration DOCTYPE comme suit:
<!DOCTYPE modulo PUBLIC "-//Modulo//DTD Modulo 2.0//EN"=20
"http://modulo.macymed.fr/DTD/2.0/module.dtd" >
Lors du parsing, il veut absolument aller me chercher sur le reseau la=20
DTD http://modulo.macymed.fr/DTD/2.0/module.dtd. Hors cette DTD est deja =
incluse dans un de mes jars. Comment expliquer au parser que la dtd pour
"-//Modulo//DTD Modulo 2.0//EN" est accessible ailleur que sur=20
http://modulo.macymed.fr/DTD/2.0/module.dtd?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
alexandre cartapanis
alexandre cartapanis wrote:
Bonjour, Voila j'ai un petit probleme de parsing XML.
Mes documents xml comportent un declaration DOCTYPE comme suit: <!DOCTYPE modulo PUBLIC "-//Modulo//DTD Modulo 2.0//EN" "http://modulo.macymed.fr/DTD/2.0/module.dtd" > Lors du parsing, il veut absolument aller me chercher sur le reseau la DTD http://modulo.macymed.fr/DTD/2.0/module.dtd. Hors cette DTD est dej a incluse dans un de mes jars. Comment expliquer au parser que la dtd pou r "-//Modulo//DTD Modulo 2.0//EN" est accessible ailleur que sur http://modulo.macymed.fr/DTD/2.0/module.dtd?
Le code d'initialisationdu parser:
public synchronized ModuleDefinition parse(InputStream _stream, String _fileName) throws ModuleDefinitionParseException { if (_stream == null) { throw new ModuleDefinitionParseException(this.messages.getMessage("fr.macymed.mod ulo.platform.loader.ModuleDefinitionParser.cannotread"));
} DocumentBuilder docBuilder; try { DocumentBuilderFactory docBuilderFact; docBuilderFact = DocumentBuilderFactory.newInstance(); docBuilderFact.setValidating(true); docBuilderFact.setNamespaceAware(true); docBuilderFact.setCoalescing(true); docBuilderFact.setExpandEntityReferences(true); docBuilderFact.setIgnoringComments(true); docBuilderFact.setIgnoringElementContentWhitespace(true); docBuilder = docBuilderFact.newDocumentBuilder(); } catch (FactoryConfigurationError excp) { throw new ModuleDefinitionParseException(this.messages.getMessage("fr.macymed.mod ulo.platform.loader.ModuleDefinitionParser.parserfactoryerror"), excp); } catch (ParserConfigurationException excp) { throw new ModuleDefinitionParseException(this.messages.getMessage("fr.macymed.mod ulo.platform.loader.ModuleDefinitionParser.parsererror"), excp); } InputSource source = new InputSource(_stream); try { URL dtdURL = this.getClass().getClassLoader().getResource(Constants.MODULE_DTD_PATH) ;//FIXME chage this eventuellay to obtain resources from others packages if (dtdURL == null) { throw new ModuleDefinitionParseException(this.messages.getMessage("fr.macymed.mod ulo.platform.loader.ModuleDefinitionParser.nodtd", new Object[] {"module.dtd", this.getClass().getClassLoader()})); } System.out.println(source.getSystemId()); System.out.println(source.getPublicId()); source.setSystemId(dtdURL.toString()); source.setPublicId(null); Document document = docBuilder.parse(source); this.definition = new ModuleDefinition(); this.visitDocument(document); return this.definition; } catch (IOException excp) { excp.printStackTrace(); throw new ModuleDefinitionParseException(this.messages.getMessage("fr.macymed.mod ulo.platform.loader.ModuleDefinitionParser.ioerror", new Object[] {_fileName}), excp); } catch (SAXParseException excp) { throw new ModuleDefinitionParseException(this.messages.getMessage("fr.macymed.mod ulo.platform.loader.ModuleDefinitionParser.exxmlerror", new Object[] {_fileName, new Integer(excp.getLineNumber()), new Integer(excp.getColumnNumber())}), excp); } catch (SAXException excp) { throw new ModuleDefinitionParseException(this.messages.getMessage("fr.macymed.mod ulo.platform.loader.ModuleDefinitionParser.xmlerror", new Object[] {_fileName}), excp); } catch (DOMException excp) { throw new ModuleDefinitionParseException(this.messages.getMessage("fr.macymed.mod ulo.platform.loader.ModuleDefinitionParser.xmlerror", new Object[] {_fileName}), excp); } catch (Exception excp) { throw new ModuleDefinitionParseException(this.messages.getMessage("fr.macymed.mod ulo.platform.loader.ModuleDefinitionParser.error", new Object[] {_fileName}), excp); } }
Bonjour,
Voila j'ai un petit probleme de parsing XML.
Mes documents xml comportent un declaration DOCTYPE comme suit:
<!DOCTYPE modulo PUBLIC "-//Modulo//DTD Modulo 2.0//EN"
"http://modulo.macymed.fr/DTD/2.0/module.dtd" >
Lors du parsing, il veut absolument aller me chercher sur le reseau la
DTD http://modulo.macymed.fr/DTD/2.0/module.dtd. Hors cette DTD est dej a
incluse dans un de mes jars. Comment expliquer au parser que la dtd pou r
"-//Modulo//DTD Modulo 2.0//EN" est accessible ailleur que sur
http://modulo.macymed.fr/DTD/2.0/module.dtd?
Le code d'initialisationdu parser:
public synchronized ModuleDefinition parse(InputStream _stream,
String _fileName) throws ModuleDefinitionParseException {
if (_stream == null) {
throw new
ModuleDefinitionParseException(this.messages.getMessage("fr.macymed.mod ulo.platform.loader.ModuleDefinitionParser.cannotread"));
}
DocumentBuilder docBuilder;
try {
DocumentBuilderFactory docBuilderFact;
docBuilderFact = DocumentBuilderFactory.newInstance();
docBuilderFact.setValidating(true);
docBuilderFact.setNamespaceAware(true);
docBuilderFact.setCoalescing(true);
docBuilderFact.setExpandEntityReferences(true);
docBuilderFact.setIgnoringComments(true);
docBuilderFact.setIgnoringElementContentWhitespace(true);
docBuilder = docBuilderFact.newDocumentBuilder();
} catch (FactoryConfigurationError excp) {
throw new
ModuleDefinitionParseException(this.messages.getMessage("fr.macymed.mod ulo.platform.loader.ModuleDefinitionParser.parserfactoryerror"),
excp);
} catch (ParserConfigurationException excp) {
throw new
ModuleDefinitionParseException(this.messages.getMessage("fr.macymed.mod ulo.platform.loader.ModuleDefinitionParser.parsererror"),
excp);
}
InputSource source = new InputSource(_stream);
try {
URL dtdURL =
this.getClass().getClassLoader().getResource(Constants.MODULE_DTD_PATH) ;//FIXME
chage this eventuellay to obtain resources from others packages
if (dtdURL == null) {
throw new
ModuleDefinitionParseException(this.messages.getMessage("fr.macymed.mod ulo.platform.loader.ModuleDefinitionParser.nodtd",
new Object[] {"module.dtd", this.getClass().getClassLoader()}));
}
System.out.println(source.getSystemId());
System.out.println(source.getPublicId());
source.setSystemId(dtdURL.toString());
source.setPublicId(null);
Document document = docBuilder.parse(source);
this.definition = new ModuleDefinition();
this.visitDocument(document);
return this.definition;
} catch (IOException excp) {
excp.printStackTrace();
throw new
ModuleDefinitionParseException(this.messages.getMessage("fr.macymed.mod ulo.platform.loader.ModuleDefinitionParser.ioerror",
new Object[] {_fileName}), excp);
} catch (SAXParseException excp) {
throw new
ModuleDefinitionParseException(this.messages.getMessage("fr.macymed.mod ulo.platform.loader.ModuleDefinitionParser.exxmlerror",
new Object[] {_fileName, new Integer(excp.getLineNumber()), new
Integer(excp.getColumnNumber())}), excp);
} catch (SAXException excp) {
throw new
ModuleDefinitionParseException(this.messages.getMessage("fr.macymed.mod ulo.platform.loader.ModuleDefinitionParser.xmlerror",
new Object[] {_fileName}), excp);
} catch (DOMException excp) {
throw new
ModuleDefinitionParseException(this.messages.getMessage("fr.macymed.mod ulo.platform.loader.ModuleDefinitionParser.xmlerror",
new Object[] {_fileName}), excp);
} catch (Exception excp) {
throw new
ModuleDefinitionParseException(this.messages.getMessage("fr.macymed.mod ulo.platform.loader.ModuleDefinitionParser.error",
new Object[] {_fileName}), excp);
}
}
Bonjour, Voila j'ai un petit probleme de parsing XML.
Mes documents xml comportent un declaration DOCTYPE comme suit: <!DOCTYPE modulo PUBLIC "-//Modulo//DTD Modulo 2.0//EN" "http://modulo.macymed.fr/DTD/2.0/module.dtd" > Lors du parsing, il veut absolument aller me chercher sur le reseau la DTD http://modulo.macymed.fr/DTD/2.0/module.dtd. Hors cette DTD est dej a incluse dans un de mes jars. Comment expliquer au parser que la dtd pou r "-//Modulo//DTD Modulo 2.0//EN" est accessible ailleur que sur http://modulo.macymed.fr/DTD/2.0/module.dtd?
Le code d'initialisationdu parser:
public synchronized ModuleDefinition parse(InputStream _stream, String _fileName) throws ModuleDefinitionParseException { if (_stream == null) { throw new ModuleDefinitionParseException(this.messages.getMessage("fr.macymed.mod ulo.platform.loader.ModuleDefinitionParser.cannotread"));
} DocumentBuilder docBuilder; try { DocumentBuilderFactory docBuilderFact; docBuilderFact = DocumentBuilderFactory.newInstance(); docBuilderFact.setValidating(true); docBuilderFact.setNamespaceAware(true); docBuilderFact.setCoalescing(true); docBuilderFact.setExpandEntityReferences(true); docBuilderFact.setIgnoringComments(true); docBuilderFact.setIgnoringElementContentWhitespace(true); docBuilder = docBuilderFact.newDocumentBuilder(); } catch (FactoryConfigurationError excp) { throw new ModuleDefinitionParseException(this.messages.getMessage("fr.macymed.mod ulo.platform.loader.ModuleDefinitionParser.parserfactoryerror"), excp); } catch (ParserConfigurationException excp) { throw new ModuleDefinitionParseException(this.messages.getMessage("fr.macymed.mod ulo.platform.loader.ModuleDefinitionParser.parsererror"), excp); } InputSource source = new InputSource(_stream); try { URL dtdURL = this.getClass().getClassLoader().getResource(Constants.MODULE_DTD_PATH) ;//FIXME chage this eventuellay to obtain resources from others packages if (dtdURL == null) { throw new ModuleDefinitionParseException(this.messages.getMessage("fr.macymed.mod ulo.platform.loader.ModuleDefinitionParser.nodtd", new Object[] {"module.dtd", this.getClass().getClassLoader()})); } System.out.println(source.getSystemId()); System.out.println(source.getPublicId()); source.setSystemId(dtdURL.toString()); source.setPublicId(null); Document document = docBuilder.parse(source); this.definition = new ModuleDefinition(); this.visitDocument(document); return this.definition; } catch (IOException excp) { excp.printStackTrace(); throw new ModuleDefinitionParseException(this.messages.getMessage("fr.macymed.mod ulo.platform.loader.ModuleDefinitionParser.ioerror", new Object[] {_fileName}), excp); } catch (SAXParseException excp) { throw new ModuleDefinitionParseException(this.messages.getMessage("fr.macymed.mod ulo.platform.loader.ModuleDefinitionParser.exxmlerror", new Object[] {_fileName, new Integer(excp.getLineNumber()), new Integer(excp.getColumnNumber())}), excp); } catch (SAXException excp) { throw new ModuleDefinitionParseException(this.messages.getMessage("fr.macymed.mod ulo.platform.loader.ModuleDefinitionParser.xmlerror", new Object[] {_fileName}), excp); } catch (DOMException excp) { throw new ModuleDefinitionParseException(this.messages.getMessage("fr.macymed.mod ulo.platform.loader.ModuleDefinitionParser.xmlerror", new Object[] {_fileName}), excp); } catch (Exception excp) { throw new ModuleDefinitionParseException(this.messages.getMessage("fr.macymed.mod ulo.platform.loader.ModuleDefinitionParser.error", new Object[] {_fileName}), excp); } }