<item>
<property name="someId" selected="true"></property>
<property name="someId2"></property>
</item>
这是我的XmlProperty文件,现在我的目标只需要实现具有所选属性的属性,我不知道用ApacheAnt通过索引访问属性的任何方式,或者使用foreach&amp; XmlProperty上的索引。
THX:)
答案 0 :(得分:1)
重构XML属性定义是否有帮助,以便您可以按名称访问属性。
重组的XML属性:
<item>
<someId selected="true"/>
<someId2/>
</item>
构建文件:
<project default="conditionals">
<xmlproperty file="properties.xml" keepRoot="false" collapseAttributes="true"/>
<target name="conditionals" depends="ifSomeId, ifSomeId2"/>
<target name="ifSomeId" if="someId.selected">
<echo message="in ifSomeId"/>
</target>
<target name="ifSomeId2" if="someId2.selected">
<echo message="in ifSomeId2"/>
</target>
</project>
输出:
$ ant
Buildfile: build.xml
ifSomeId:
[echo] in ifSomeId
ifSomeId2:
conditionals:
BUILD SUCCESSFUL
Total time: 0 seconds
答案 1 :(得分:0)
您可以通过过滤器链在ant中加载属性文件,该过滤器链会排除没有selected="true"
属性的属性。
答案 2 :(得分:0)
在我的情况下情况有所不同,我有一个名为settings的标签,他包含标签项目的10倍,就像项目数组一样,现在我对检查每个项目都不感兴趣,我想切片或者只需按索引或类似的方式访问特定的, 这是我目前的解决方案。
<target name="GetSettings">
<echo message="Getting settings for compiling"></echo>
<loadfile srcfile="Settings.xml" property="settings">
<filterchain>
<linecontains>
<contains value="selected"></contains>
</linecontains>
</filterchain>
</loadfile>
<echo message="${settings}" file="temp.xml"></echo>
<xmlproperty file="temp.xml" collapseAttributes="true"></xmlproperty>
<delete file="temp.xml"></delete>
</target>
不完美但工作得很好。
答案 3 :(得分:0)
对于由xmlproperty文件驱动的Ant脚本,您应该使用Xpath的强大功能。在xmltask的帮助下(推荐用于工作流程中的所有xml相关部分),您可以这样做=
你的xmlproperty文件somefile.xml =
<item>
<property name="someId" selected="true"></property>
<property name="someId2"></property>
</item>
使用xpath的xmltask的示例脚本,对于每个匹配,
引用目标'sometarget'被称为=
<project default="main">
<taskdef name="xmltask" classname="com.oopsconsultancy.xmltask.ant.XmlTask"/>
<target name="main">
<xmltask source="somefile.xml">
<call path="/item/property[@selected='true']" target="sometarget">
<param name="name" path="@name"/>
</call>
</xmltask>
</target>
<target name="sometarget">
<echo>${name}</echo>
</target>
</project>
输出=
[echo] someId
xpath =
的一些资源