2017-07-08 49 views
1

我想用xmltask(ANT腳本)替換xml字段值。但是,如果xml元素爲空,則不會替換該值。xmltask(ANT):: replace withtext不適用於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> 

如果'doclocation'元素具有null/no值,則上述代碼段不起作用。

這裏需要做些什麼來處理空值並將其替換爲新值?

回答

0

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

 <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> 
+0

請問有什麼辦法來替換文本,如果文本不存在? – nikhil

+0

此代碼應該適用於。你在問什麼? –

+0

是的,它應該能夠在元素中插入文本,而不用Cdata標記替換整個元素,這有可能嗎? – nikhil