xmltask copy 的 path 属性仅包含要复制的元素的 XPath 引用。
如果要捕获所有匹配项,则需要为 xmltask 副本设置属性 append,
请参阅xmltask 手册:
当设置为 true 时,附加到给定的缓冲区或属性。您只能在创建新属性时追加,因为 Ant 属性是不可变的(即当 XPath 解析为多个文本节点时)
<copy path="//Reference[@name!='MyDB']/@name" attrvalue="true" property="bad_connection_name" append="true"/>
你也可以设置一个propertySeparator, default=','
但是获取所有具有错误连接字符串的文件的更简单的方法是使用带有选择器的文件集,如下所示:
<fileset dir="${srcdir}/../apps" includes="*/conn.xml" id="foo">
<contains text=" your bad Connection string goes here "/>
</fileset>
<!-- simple echo -->
<echo>${toString:foo}</echo>
<!-- convert to one file one line -->
<pathconvert refid="foo" pathsep="${line.separator}" property="foobar"/>
<!-- echo to ant logger/stdout -->
<echo>${foobar}</echo>
<!-- write to file -->
<echo file="path/to/badconnection.txt">${foobar}</echo>
如果错误的连接字符串不是静态的,请使用containsregexp选择器而不是contains。