我有一个名为 TIBCOUniversalInstaller_TRA_5.10.0.silent 的 XML 文件,如下所示。我想使用 xmltask 任务在 ant 脚本中使用“替换”目标替换 XML 文件中的值。XML文件如下:
<?xml version="1.0"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>---Universal Installer Silent Installation Properties---</comment>
<!--accept the license agreement-->
<entry key="acceptLicense">true</entry>
<entry key="installationRoot">/opt/tibco</entry>
<entry key="environmentName">TRA</entry>
</properties>
在解析 XML 文件时,由于我的服务器无法访问 java.sun.com,所以我在本地机器上下载了 properties.dtd 并使用 xmlcatalog 任务我强制 ant 脚本读取 properties.dtd 的本地副本。下面是我的蚂蚁脚本
<xmlcatalog id="dtd">
<dtd publicId="SYSTEM" location="/home/tibco/BW-AUTOMATION-
PROJECT/Environments/properties.dtd"/>
</xmlcatalog>
<xmltask source="${TRASoftwareFolder}/TIBCOUniversalInstaller_TRA_5.10.0.silent" dest="${TRASoftwareFolder}/TIBCOUniversalInstaller_TRA_5.10.0.silent">
<xmlcatalog refid="dtd">
</xmlcatalog>
<replace path="/:properties/:entry/:[@key='installationRoot']/text()"
withText="/home/tibco"/>
</xmltask>
但仍然在解析 XML 内容时,每次访问http://java.sun.com/dtd/properties.dtd时我都会收到“连接被拒绝错误”。当我进行调试时,我在下面看到了我认为可能存在的问题,并且它总是会转到网站而不是本地 dtd 文件。
调试日志:
“找不到匹配的目录条目,解析器将使用:' http: //java.sun.com/dtd/properties.dtd '”
我相信这是因为我在 dtd 元素内的“publicId”属性中将“SYSTEM”作为值。您能否告知此给定 dtd 的“publicID”属性的正确值,以便它在解析时与目录匹配。
如果有其他读取/替换此 XML 文件的方法,请告知。
谢谢