Муравей Задача для или цикл foreach в XML-файлах
Мне нужна помощь в циклическом просмотре 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 1 2 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>
2 ответа
Вы можете использовать выражение XPATH для возврата всего, что соответствует заданному шаблону. В вашем случае значение определенных тегов.
Не использовал ANT годами, с тех пор как я перешел на Maven.
Когда я использовал ant, я создавал настраиваемую задачу ant для такого рода функций. Тогда у вас есть все возможности Java и гораздо более читаемый код за счет необходимости компилировать задачу, если вам нужно внести изменения.
Это действительно зависит от того, что вы собираетесь делать с выходом. Другой ответ с xpath более уместен, если вы делаете что-то действительно простое.
См. http://ant.apache.org/manual/develop.html http://docs.oracle.com/javase/tutorial/jaxp/sax/parsing.html