我有一个名为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的本地副本.Below是我的蚂蚁脚本
<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并且我得到“Connection Refused Error”。 当我做调试时,我看到下面哪个我相信可能会出问题,而且总是去网站而不是本地dtd文件。
DEBUG LOGS:
“找不到匹配的商品,解析器将使用:'http://java.sun.com/dtd/properties.dtd'”
我相信这是因为我在“dtd元素”中的“publicId”属性中将“SYSTEM”作为值。 你能否告诉我这个给定的dtd的“publicID”属性应该是什么值,以便它在解析时匹配目录。
如果还有其他方法可以阅读/替换此XML文件,请提供建议。
由于