2009-09-23 8 views
5

Parsen Ich habe folgende XML-Schnipsel:Connection refused: connect während xml mit groovigen

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

Bei dem Versuch, diese XML zu analysieren mit:

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

Ich erhalte die folgende Fehlermeldung:

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

Dieser Fehler verschwindet, wenn ich den DOCTYPE aus dem XML-Snippet entferne. Gibt es eine Möglichkeit, zu verhindern, dass groovy script versucht, sich mit der URL zu verbinden?

Antwort

5

Wenn Sie einen entsprechenden Parser verwenden, versuchen die load-external-dtd Feature.

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

Ansonsten denke ich, Sie set ein EntityResolver die nichts tut, haben würde.

1

Versuchen

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

, um es nicht-Validierung

2

Der Parser versucht, die in DOCTYPE referenzierte externe DTD herunterzuladen.

Sie haben zwei Möglichkeiten, deaktivieren Sie die Verwendung der externen DTD oder richten Sie Ihre Java/Groovy XML-Umgebung ein, um einen lokalen Katalog von DTDs zu verwenden. http://www.sagehill.net/docbookxsl/WriteCatalog.html

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

:

Sie können mit

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

Informationen zum Einrichten und Verwenden eines lokalen Katalog finden Sie in der externen DTD Laden deaktivieren

Verwandte Themen