【问题标题】:xmltask (ANT) :: replace withtext not working for null value of xml elementxmltask (ANT) :: 替换为文本不适用于 xml 元素的空值
【发布时间】:2017-07-08 09:30:40
【问题描述】:

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

如果 'doclocation' 元素具有空值/无值,则上述代码不起作用。

这里需要做什么来处理空值并将其替换为新值?

【问题讨论】:

    标签: xml ant xmltask


    【解决方案1】:

    您可以在所有情况下完全替换 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>
    

    【讨论】:

    • 如果文本不存在,有什么办法可以替换文本??
    • 此代码适用于 。你问的是这个吗?
    • 是的,它应该能够在元素 中插入文本而不用 Cdata 标签替换整个元素,是否可以?
    • 我的解决方案替换了整个元素,我相信您已经尝试过了。你能解释一下在什么情况下替换整个元素而不是“只是”内容会是一个问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多