2009-09-23 15 views
5

tengo el siguiente fragmento xml:conexión rechazada: conectar al analizar XML con maravilloso

<?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> 

Al tratar de analizar este XML usando:

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

me sale el siguiente error:

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

Este error desaparece si elimino el DOCTYPE del fragmento xml. ¿Hay alguna manera de evitar que Groovy Script intente conectarse a la URL?

Respuesta

5

Si estás usando un analizador adecuado, probar el load-external-dtd característica.

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

lo contrario, creo que tendría que set un EntityResolver que no hace nada.

1

Trate

def sqlMapOld = new XMLParser (falsa, verdadera) .parse (archivo)

para que sea no validador

2

El analizador intenta descargar la DTD externa a la que se hace referencia en el DOCTYPE.

Tiene dos opciones, desactivar el uso de la DTD externa o configurar su entorno Java/Groovy XML para usar un catálogo local de DTD.

Se puede desactivar la carga DTD externo con

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

Para obtener información sobre cómo configurar y utilizar un catálogo local, véase: http://www.sagehill.net/docbookxsl/WriteCatalog.html

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

Cuestiones relacionadas