Ant XMLTASK如果没有插入节点';不存在

Ant XMLTASK如果没有插入节点';不存在,xml,ant,xmltask,Xml,Ant,Xmltask,我的任务是将一个XML节点插入到现有的XML文件中,前提是该节点不存在。我可以很好地管理插入,但是如果没有功能,我也找不到缺少的功能 我的关系 ]]> 如果我多次运行此操作,当然在xml文件中会有多个连接。我想做一个检查,以便仅在所需连接尚未在文件中时插入 提前谢谢。我设法解决了我的问题。这或多或少是一个解决办法。解决方案是先删除后插入的方法 <xmltask source="shared.xml" dest="shared.xml" outputter="simple:3">

我的任务是将一个XML节点插入到现有的XML文件中,前提是该节点不存在。我可以很好地管理插入,但是如果没有功能,我也找不到缺少的功能


我的关系
]]>
如果我多次运行此操作,当然在xml文件中会有多个连接。我想做一个检查,以便仅在所需连接尚未在文件中时插入


提前谢谢。

我设法解决了我的问题。这或多或少是一个解决办法。解决方案是先删除后插入的方法

<xmltask source="shared.xml" dest="shared.xml" outputter="simple:3">
   <remove path="/sharedobjects/connection[name/text()='MY CONNECTION']"/>
   <insert path="/sharedobjects[last()]">
      <![CDATA[
      <connection>   
         <name>MY CONNECTION</name>
      </connection>
      ]]>
   </insert>
</xmltask>

我的关系
]]>

我相信这种方法也很有效

<xmltask source="shared.xml" dest="shared.xml" outputter="simple:3">

   <copy path="/sharedobjects/connection[name/text()='MY CONNECTION']/name/text()"
         property="XML_EXISTS_ALREADY" />

   <insert path="/sharedobjects[last()]" unless="XML_EXISTS_ALREADY">
      <![CDATA[
      <connection>   
         <name>MY CONNECTION</name>
      </connection>
      ]]>
   </insert>
</xmltask>

我的关系
]]>
注意:xmltask的复制任务只允许在属性中存储属性或文本节点。因此,有必要在
的path参数末尾指定
/name/text()
(即使我们真正关心的是整个
节点的存在,而不是它的子节点的文本)。

使用Ant条件(不确定在询问问题时是否所有节点都存在):


<xmltask source="shared.xml" dest="shared.xml" outputter="simple:3">

   <copy path="/sharedobjects/connection[name/text()='MY CONNECTION']/name/text()"
         property="XML_EXISTS_ALREADY" />

   <insert path="/sharedobjects[last()]" unless="XML_EXISTS_ALREADY">
      <![CDATA[
      <connection>   
         <name>MY CONNECTION</name>
      </connection>
      ]]>
   </insert>
</xmltask>
<if>
    <not>
        <resourcecontains 
            resource="shared.xml" 
            substring="&gt;MY CONNECTION&lt;name&gt;" />
    </not>
<then>
    <xmltask 
...
    </xmltask>
</then>