使用Ant XmlTask​​更新属性值时未发现DTD错误

时间:2013-12-04 10:53:28

标签: xml ant dtd xmltask xmlcatalog

我想更新debug.classpath属性的值。我正在使用XmlTask进行操作。但是,我遇到DTD未找到问题。

这是我的目标XML文件。

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE Configuration SYSTEM "xconf.dtd">
<Configuration>
     <Property name="debug.classpath" value="<changeme>"
</Configuration>

这是我的蚂蚁目标。

<target name="configure" >
      <xmltask source="myxml.xml">
            <attr path="//Property[@name='debug.classpath']" attr="value"  value="New Value"/>
      </xmltask>    
</target>

当我执行此目标时,我得到以下错误。

  

[xmltask] java.io.FileNotFoundException:D:\ utils \ xconf.dtd(The   系统找不到指定的文件)

此DTD存在于名为Utils.jar的Jar文件中。在google'ing之后我找到XmlCatalog任务并使用我写下目标版本的下面版本。(不确定我是否已经预期使用XmlCatalog)。 Utils.jar不在Ant的类路径中,因此尝试使用<classpath>添加它。

<target name="configure">
    <xmlcatalog id="XconfDtd">
        <classpath>
            <pathelement location="D:/libs/Utils.jar"/>
        </classpath>
        <dtd location="xconf.dtd" />
    </xmlcatalog>
    <xmltask source="${env.WT_HOME}/codebase/wt.properties.xconf">
        <xmlcatalog refid="XconfDtd" />
        <attr path="//Property[@name='debug.classpath']" attr="value" value="New Value" />
    </xmltask>
</target>

然而,当我执行此目标时,我得到以下错误

  

[xmltask] java.lang.NullPointerException [xmltask] at   org.apache.tools.ant.types.XMLCatalog.findMatchingEntry(XMLCatalog.java:592)   [xmltask] at   org.apache.tools.ant.types.XMLCatalog.access $ 000(XMLCatalog.java:119)   [xmltask] at   org.apache.tools.ant.types.XMLCatalog $ InternalResolver.resolveEntity(XMLCatalog.java:811)   [xmltask] at   org.apache.tools.ant.types.XMLCatalog.resolveEntity(XMLCatalog.java:385)   [xmltask] at   com.sun.org.apache.xerces.internal.util.EntityResolverWrapper.resolveEntity(EntityResolverWrapper.java:110)   [xmltask] at   com.sun.org.apache.xerces.internal.impl.XMLEntityManager.resolveEntityAsPerStax(XMLEntityManager.java:994)   [xmltask] at   com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl $ DTDDriver.dispatch(XMLDocumentScannerImpl.java:1149)   [xmltask] at   com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl $ DTDDriver.next(XMLDocumentScannerImpl.java:1047)   [xmltask] at   com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl $ PrologDriver.next(XMLDocumentScannerImpl.java:960)   [xmltask] at   com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:607)   [xmltask] at   com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:116)   [xmltask] at   com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:488)   [xmltask] at   com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:835)   [xmltask] at   com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)

即使将Utils.jar放到$ANT_HOME/lib之后,我仍然会看到上述错误。任何帮助都非常感谢。您可以建议在Ant中实现此目的的任何替代方法。

提前致谢。

0 个答案:

没有答案