itt.@name gets you the attribute called "name".
On 4/2/2023 9:29 AM, James McMahon wrote:
Hello. I am developing a Groovy script to work through all the tags in
an incoming t"ext 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 <http://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