2

我的示例 XML 看起来像:

<root>
    <Month name="Jan">
        <foo someAttr="bar"/>
    </Month>

    <Month name="July">
        <foo someAttr="zzz"/>
    </Month>

</root>

当我说:

<xmlproperty file="${root.dir}/my.xml" keeproot="false"/>

<echo message="Month.foo : ${Month.foo(someAttr)}"/> 

打印我吧,zzz。我想根据月份名称检索 foo xml 元素的 someAttr 值。例如让我Month.foo(someAttr) where Month.name="Jan"

Ant 是否支持一种方法,或者我是否应该根据另一个相关查询使用 xslt 定义我的规则:xmlproperty and retrieving property value of xml element if specific attribute is present/set

4

1 回答 1

2

使用xmltask结合xpath,即:

<project>
<!-- Import XMLTask -->
<taskdef name="xmltask" classname="com.oopsconsultancy.xmltask.ant.XmlTask"/>

<macrodef name="grepxml">
 <attribute name="src"/>
 <attribute name="xpath"/>
 <attribute name="result"/>
 <sequential>
  <xmltask source="@{src}">
   <copy path=@{xpath}" property="@{result}"/>
  </xmltask>
 </sequential>
</macrodef>

<grepxml
 src="path/to/your/xml"
 xpath="string(//Month[@name='July']/foo/@*)"
 result="foobar"
/> 

 <echo>$${foobar} => ${foobar}</echo>

</project>

将 grep 'zzz'

于 2013-11-07T14:56:26.477 回答