xmltask(ANT)::替换为不适用于xml元素空值的文本

xmltask(ANT)::替换为不适用于xml元素空值的文本,xml,ant,xmltask,Xml,Ant,Xmltask,我试图使用xmltask(ANT脚本)替换xml字段值。但是,如果xml元素为空,它不会替换该值 例如: <Mydoc> <doc> <docname>abc.txt</docname> <doclocation>xyz</doclocation> </doc> <doc> <docname>mmm.txt<

我试图使用xmltask(ANT脚本)替换xml字段值。但是,如果xml元素为空,它不会替换该值

例如:

   <Mydoc>
      <doc>
      <docname>abc.txt</docname>
      <doclocation>xyz</doclocation>
      </doc>
      <doc>
      <docname>mmm.txt</docname>
      <doclocation></doclocation>
      </doc>
    </Mydoc>

in the above example i want to update the "doclocation" element if "docname" element is "mmm.txt"

abc.txt
xyz
mmm.txt
在上面的例子中,如果“docname”元素是“mmm.txt”,我想更新“doclocation”元素
用来实现它的脚本

        <xmltask dest="sample.xml">
         <fileset file="sample.xml"/>

            <replace 
            path="/Mydoc/doc[docname="mmm.txt"]/doclocation/text()"
            withText="newURL"/>

          </xmltask>

如果“doclocation”元素具有null/no值,则上述代码不起作用


这里需要做些什么来处理空值并用新值替换它?

您可以使用CDATA部分完全替换所有情况下的doclocation元素,例如:

     <property name="newURL" value="https://www.stackoverflow.com"/>
     <xmltask source="sample.xml" dest="result.xml">
        <replace path="/Mydoc/doc[docname='mmm.txt']/doclocation">
           <![CDATA[ <doclocation>${newURL}</doclocation> ]]>
        </replace>
     </xmltask>

${newURL}]>

如果文本不存在,是否有办法替换文本?此代码应适用于或。这就是您要问的吗?是的,它应该能够在元素中插入文本,或者不使用Cdata标记替换整个元素,是吗?我的解决方案替换了整个元素,我相信您已经尝试过了。你能解释一下,在什么情况下,替换整个元素而不是“仅仅”替换内容是一个问题吗?