当有多个匹配的属性时获取XML属性

时间:2016-07-12 14:23:22

标签: xml ant

我有一个像这样的XML文件:

<vrmlist>
    <vrm version="4" product="prod1" platform="windows"/>
    <vrm version="1" product="prod1" platform="web"/>
    <vrm version="6" product="prod2" platform="windows"/>
</vrmlist>

该文件用于其他目的,因此更改其结构将很困难。我想使用<xmlproperty>任务独立访问每个项目的版本。

实施例

<xmlproperty file="test.xml"/>

<target name="test">
    <echo>Version: ${vrmlist.vrm(version)}</echo>
</target>

结果

test:
     [echo] Version: 4,1,6

我想要的是能够独立访问给定产品和平台的每个<vrm>的属性,以便我可以在构建文件中使用它。

我想要的例子(不起作用):

<echo>${vrmlist.vrm[@product="prod1" and @platform="windows"](version)}</echo>

Test:
    [echo] Version: 4

这可能吗?

类似的问题:Ant xmlproperty task. What happens when there is more than one tag with the same name?

1 个答案:

答案 0 :(得分:0)

免费的第三方XmlTask库可以使用XPath提取XML值:

的build.xml

<taskdef name="xmltask" classname="com.oopsconsultancy.xmltask.ant.XmlTask"/>
<xmltask>
    <fileset file="src.xml"/>
    <copy
        path="/vrmlist/vrm[@product='prod1' and @platform='windows']/@version"
        property="vrm.version"/>
</xmltask>
<echo>vrm.version : ${vrm.version}</echo>

输出

run:
     [echo] vrm.version : 4
相关问题