Il s'agit d'un problème connu XML parsers often send out HTTP requests for fetching DTDs référencé dans les documents. Plus précisément, Python's one does this. Cela provoque un trafic excessif pour www.w3.org, qui héberge beaucoup de ces DTD. À son tour, cela rend l'analyse XML prendre beaucoup de temps et, dans certains cas, expire. Cela peut être un problème sérieux, car cela rend une tâche apparemment uniquement liée au traitement de texte dépendant d'une tierce partie non fiable. Pour pallier ce problème (une vraie solution étant très difficile), je voudrais installer un proxy Web de mise en cache localement et demander à xml.sax d'envoyer ses requêtes via ce proxy. Je ne veux pas que les paramètres de proxy fuient vers d'autres composants, donc les paramètres système sont hors de question.Comment faire pour que xml.sax utilise un proxy HTTP pour ses requêtes DTD?
Comment faire pour que xml.sax utilise un proxy HTTP?
J'ai:
handler = # instance of a subclass of xml.sax.handler.ContentHandler
parser = xml.sax.make_parser()
parser.setContentHandler(handler)
parser.parse(indata)
return handler.result()
Une approche consiste à utiliser un EntityResolver personnalisé. Cependant, il s'avère it is not possible to implement a caching EntityResolver, parce qu'il ne reçoit pas assez d'informations.
Quelle version de Python? – aaronasterling
@aaronasterling: 2,5 préféré, mais 2,6 et 2,7 sont également acceptables. –