2009-09-23 7 views
5

Je l'extrait de code XML suivant:Connection refused: connecter lors de l'analyse xml avec groovy

<?xml version="1.0" encoding="UTF-8" ?> 

<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" 
    "http://ibatis.apache.org/dtd/sql-map-2.dtd"> 
<sqlMap namespace="reports"> 

    <typeAlias alias="Header" type="VerificationVO"/> 
    </sqlMap> 

Tout en essayant d'analyser ce xml en utilisant:

def sqlMapOld = new XmlParser().parse(file) 

Je reçois l'erreur suivante:

Exception thrown: Connection refused: connect 
java.net.ConnectException: Connection refused: connect 

Cette erreur disparaît si je supprime le DOCTYPE du fragment xml. Y at-il un moyen d'arrêter le script groovy d'essayer de se connecter à l'URL?

Répondre

5

Si vous utilisez un analyseur approprié, essayez le load-external-dtd fonctionnalité.

def parser= new XmlParser() 
parser.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false) 
def sqlMapOld= parser.parse(new FileInputStream(file)) 

Sinon, je pense que vous auriez à set un EntityResolver qui ne fait rien.

1

Essayez

def sqlMapOld = new XmlParser (false, true) .parse (fichier)

pour le rendre non-validation

2

L'analyseur tente de télécharger la DTD externe référencée dans le DOCTYPE.

Vous avez deux options: désactiver l'utilisation de la DTD externe ou configurer votre environnement Java/Groovy XML pour utiliser un catalogue local de DTD.

Vous pouvez désactiver le chargement DTD externe avec

def p = new XmlParser() 
p.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false) 
p.parse(file) 

Pour plus d'informations sur la configuration et l'utilisation d'un catalogue local voir http://www.sagehill.net/docbookxsl/WriteCatalog.html

http://www.sagehill.net/docbookxsl/UseCatalog.html