пример. xml
<?xml version="1.0" encoding="UTF-8"?> <Element> <Language Type="Java"> <parameter name="JavatPoint"> <url>https://www.javatpoint.com/</url> </parameter> <parameter name="Guru99"> <url>https://www.guru99.com/</url> </parameter> <parameter name="w3schools"> <url>https://www.w3schools.com/</url> </parameter> </Language> <Language sdkType="Python"> <parameter name="Tutorialspoint"> <url>https://www.tutorialspoint.com/python/</url> </parameter> <parameter name="LearnPython"> <url>https://learnpythonthehardway.org/</url> </parameter> <parameter name="Code Academy"> <url>https://www.codecademy.com/learn/learn-python</url> </parameter> </language> </Element>
Мне нужно проанализировать этот пример. xml на основе типа (например, java, python), чтобы получить значение URL и добавьте эти значения в arrayList. Поскольку я не знаю о xmlHolder, может кто-нибудь подсказать мне, как этого добиться?
Спасибо.
Вы можете сделать это с помощью Groovy следующим образом (обратите внимание, что последний в вашем примере с нижним регистром L и недопустим XML):
import groovy.util.XmlSlurper def xmlString =''' <Element> <Language Type="Java"> <parameter name="JavatPoint"> <url>https://www.javatpoint.com/</url> </parameter> <parameter name="Guru99"> <url>https://www.guru99.com/</url> </parameter> <parameter name="w3schools"> <url>https://www.w3schools.com/</url> </parameter> </Language> <Language sdkType="Python"> <parameter name="Tutorialspoint"> <url>https://www.tutorialspoint.com/python/</url> </parameter> <parameter name="LearnPython"> <url>https://learnpythonthehardway.org/</url> </parameter> <parameter name="Code Academy"> <url>https://www.codecademy.com/learn/learn-python</url> </parameter> </Language> </Element> ''' // error in closing tag def Element = new XmlSlurper().parseText(xmlString) def arr = [] def a = Element.Language.each() { node -> node.attributes().each { att, lang -> println lang arr = [] node.'**'.findAll() { childnode -> childnode.name() == 'parameter' }.url.each { arr.add(it) } } arr.each { println it } }