xmltask(ANT):: replace withtext不能用于xml元素的null值

时间:2017-07-08 09:30:40

标签: xml ant xmltask

我正在尝试使用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"

用于实现它的脚本。

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

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

          </xmltask>
如果&#39; doclocation&#39;上面的代码不起作用? element有null / no值。

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

1 个答案:

答案 0 :(得分:1)

您可以使用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>