在使用Groovy解析XML时出现“连接被拒绝:连接”错误。

5

I have the following 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>

在尝试使用以下方法解析此xml时:

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

I get the following error:

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

如果我从xml片段中删除DOCTYPE,这个错误就会消失。有没有办法阻止groovy脚本尝试连接到URL?

3个回答

5
如果您正在使用适当的解析器,请尝试使用load-external-dtd功能。
def parser= new XmlParser()
parser.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false)
def sqlMapOld= parser.parse(new FileInputStream(file))

否则,我认为你需要设置一个什么也不做的实体解析器 (set)

2

解析器正在尝试下载 DOCTYPE 中引用的外部 DTD。

您有两个选项,禁用使用外部 DTD 或设置您的 Java/Groovy XML 环境以使用本地 DTD 目录。

您可以通过以下方式禁用外部 DTD 加载:

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

有关设置和使用本地目录的信息,请参见: http://www.sagehill.net/docbookxsl/WriteCatalog.html

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


1

尝试

使用以下代码:

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

使其无需验证。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接