Bonjour,
Je cherche à récupérer des valeurs contenue dans une balise en connaissant la valeur d'un de ses attributs.
Mon fichier XML ressemble à ceci :
1 2 3 4 5 6 7 8 9 10 11
| <properties>
<entry key="type">for:ir</entry>
<entry key="aspects">rn:renditioned,sys:incomplete,cm:versionable,cm:titled,cm:auditable,sys:referenceable,sys:localized,cm:failedThumbnailSource,cm:author,chartres:note-interne</entry>
<entry key="cm:creator">anowak</entry>
<entry key="cm:autoVersion">true</entry>
<entry key="chartres:objet">test-objet</entry>
<entry key="cm:modifier">anowak</entry>
<entry key="sys:locale">fr_FR</entry>
<entry key="for:Nom">alain</entry>
<entry key="cm:modified">2018-06-04T03:22:46.596+02:00</entry>
</properties> |
Je souhaite par exemple récupérer "for:ir", càd la valeur de la balise "entry" pour laquelle l'attribut "key" vaut "type"
Je parviens à récupérer chaque key et value :
1 2 3 4 5 6
|
def alfFileProperties = new XmlParser().parseText(alfFileMdXML)
alfFileProperties.'entry'.each { entry ->
out << entry.@'key'
out << entry.text()
} |
Je parviens à récupérer la clé et valeur d'un entry spécifique dont je connais l'index
1 2 3
| def nameMD = alfFileProperties.'entry'[0]
out << nameMD.@'key'
out << nameMD.text() |
Me renvoie bien "type" et "for:it". Mais je n'ai pas la certitude que les balises seront toujours dans le même ordre d'un fichier XML à l'autre...
Je ne parviens donc pas tout à fait à récupérer la valeur "for:ir" pour l'entry dont la key est "type". J'arrive plus ou moins à avoir la bonne entry avec
def testMD = alfFileProperties.depthFirst().findAll { it.@'key' == 'type' }
cela renvoie "[entry[attributes={key=type}; value=[for:ir]]] " mais je ne sais pas comment l'exploiter plus...
Quelqu'un saurait-il m'aider ?
Merci d'avance, bon week-end ! :-)
Partager