Hello. I am developing a Groovy script to work through all the tags in an
incoming text representation of an xml file. I've read my xml from the
content of a NiFi flowfile, like so:
session.read(ff, {inputStream ->
text = IOUtils.toString(inputStream, StandardCharsets.UTF_8)
def xml = new XmlParser().parseText(text)
Later in my code I iterate through the xml to find all the values
associated with that tag. Ultimately I will build a unique sorted list,
tagValues.
This is the code section that I have working so far:
incomingTagsMap.each {
tagValues.clear()
* xml.'**'.each { itt ->*
log.warn('Found this tag: {}, with this value: {}',
itt.name(), itt.text())
// If itt.text() is not on tagValues list, add it...
if ( !tagValues.contains(itt.text()) ) {
tagValues.add(itt.text()) }
log.warn('Length of tagValues list : {}',
tagValues.size())
}
log.warn('Tag {} has values: {}', ["$it.key",
tagValues.toListString()] as Object[])
}
$it.key comes from an outer iterative loop.
Where I am failing:
I was hoping someone could help me tune this because in cases like this....
<property name="User Group
Provider">file-user-group-provider</property>
...I only get *property *as the tag. What I really want to identify as my
tag is *User Group Provider* .
I've been unable to find any examples. Can anyone show me how to accomplish
this?
Thanks very much in advance.
Cheers,
Jim