5 Stimmen

Verbindung verweigert: Verbindung beim Parsen von Xml mit Groovy

Ich habe das folgende Xml-Snippet:

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

Beim Versuch, diese Xml mit zu analysieren:

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

Ich erhalte den folgenden Fehler:

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

Der Fehler verschwindet, wenn ich den DOCTYPE aus dem Xml-Snippet entferne. Gibt es eine Möglichkeit, das Groovy-Skript davon abzuhalten, eine Verbindung zur URL herzustellen?

5voto

bobince Punkte 512550

Wenn Sie einen geeigneten Parser verwenden, versuchen Sie die load-external-dtd Funktion.

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

Andernfalls müssten Sie meiner Meinung nach einstellen. eine EntityResolver die nichts bewirkt.

2voto

Alex Stoddard Punkte 8149

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

Sie haben zwei Möglichkeiten: Sie können die Verwendung der externen DTD deaktivieren oder Ihre Java/Groovy-XML-Umgebung so einrichten, dass ein lokaler Katalog von DTDs verwendet wird.

Sie können das Laden von externen DTDs deaktivieren 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 Katalogs finden Sie unter: http://www.sagehill.net/docbookxsl/WriteCatalog.html

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

1voto

Erich Kitzmueller Punkte 35336

Versuchen Sie

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

um sie nicht zu validieren

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X