xml文件中的ant任务或foreach循环

xml文件中的ant任务或foreach循环,ant,ant-contrib,xmltask,Ant,Ant Contrib,Xmltask,我需要一些关于循环遍历一个xml文件的帮助,我设法使用xmlproperty获取节点,但我正在努力研究如何在有多个参数的情况下循环遍历它们 以下是格式: <Problems> <Problem> <Rule>1</Rule> <ProblemDescription>1</ProblemDescription> <SourceFile>1</Sour

我需要一些关于循环遍历一个xml文件的帮助,我设法使用xmlproperty获取节点,但我正在努力研究如何在有多个参数的情况下循环遍历它们

以下是格式:

<Problems>
      <Problem>
        <Rule>1</Rule>
        <ProblemDescription>1</ProblemDescription>
        <SourceFile>1</SourceFile>
        <Line>1</Line>
        <Column>1</Column>
        <Severity>Warning</Severity>
     </Problem>
     <Problem>
       <Rule>2</Rule>
       <ProblemDescription>2</ProblemDescription>
       <SourceFile>2</SourceFile>
       <Line>2</Line>
       <Column>2</Column>
      <Severity>Warning</Severity>
     </Problem>
</problems>

1.
1.
1.
1.
1.
警告
2.
2.
2.
2.
2.
警告
我想循环执行此操作,以便获得以下输出:

一, 1. 1. 1. 1. 1. 2. 2. 2. 2. 二,

解决方案:

  <target>
    <taskdef name="xmltask" classname="com.oopsconsultancy.xmltask.ant.XmlTask"/>
      <xmltask source="problem.xml">

        <call path="/Problems/Problem">
            <param name="rule" path="Rule/text()" />
            <param name="probdesc" path="ProblemDescription/text()" />
            <actions>
                <echo>Rule: @{rule}</echo>
                <echo>Problem Description: @{probdesc}</echo>
            </actions>
            </call>
    </target>

规则:@{Rule}
问题描述:@{probdesc}

您可以使用XPATH表达式返回与给定模式匹配的所有内容。在您的情况下,某些标记的值


.

自从我改用maven以来,已经好几年没有使用ANT了

当我使用ant时,我会为这种功能创建一个自定义ant任务。这样,您就拥有了java的全部功能和更具可读性的代码,如果需要进行更改,您就必须编译任务

这实际上取决于您将如何处理输出。如果您做的事情非常简单,那么xpath的另一个答案更合适

见:

试试下面的答案。不需要ant contrib,使用XSLT生成处理标记的ant构建:当我10秒前尝试它时,它工作了。也许网站暂时关闭了?或者被封锁在你的办公室?是的,你是对的。现在它起作用了。我不知道原因是什么。非常感谢。