[
https://issues.apache.org/jira/browse/NIFI-13334?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Daniel Stieglitz updated NIFI-13334:
------------------------------------
Affects Version/s: 2.0.0-M4
> XMLReader drops name-value content tags from record arrays if one record has
> only one tag
> -----------------------------------------------------------------------------------------
>
> Key: NIFI-13334
> URL: https://issues.apache.org/jira/browse/NIFI-13334
> Project: Apache NiFi
> Issue Type: Bug
> Components: Core UI
> Affects Versions: 1.24.0, 2.0.0-M4
> Environment: Docker
> Reporter: Stephen Jeffrey Hindmarch
> Priority: Major
>
> If you create an XMLReader service and set the following:
> * Parse XML Attributes = true
> * Expect Records as Arrays = true
> * Field Name for Content = Value
> Then use the reader in a ConvertRecord processor with a JSONRecordSetWriter
> When parsing a flow file such as
> {noformat}
> <Events>
> <Event Type="foo">
> <UserData>
> <Data Name="Param1">String1</Data>
> <Data Name="Param2">String2</Data>
> </UserData>
> </Event>
> <Event Type="bar">
> <UserData>
> <Data Name="Param1">String</Data>
> <Data Name="Param2">String2</Data>
> <Data Name="Param3">String3</Data>
> </UserData>
> </Event>
> </Events>{noformat}
> Then as expected the content tags are parsed into arrays
> {noformat}
> [ {
> "Type" : "foo",
> "UserData" : {
> "Data" : [ {
> "Name" : "Param1",
> "Value" : "String1"
> }, {
> "Name" : "Param2",
> "Value" : "String2"
> } ]
> }
> }, {
> "Type" : "bar",
> "UserData" : {
> "Data" : [ {
> "Name" : "Param1",
> "Value" : "String"
> }, {
> "Name" : "Param2",
> "Value" : "String2"
> }, {
> "Name" : "Param3",
> "Value" : "String3"
> } ]
> }
> } ]{noformat}
> But if one of the records has only one data tag, then it will not be
> presented in an array, and more importantly, nor will the tags for the other
> record. Instead, all but the last tags are dropped.
> For example
> {noformat}
> <Events>
> <Event Type="foo">
> <UserData>
> <Data Name="Param1">String1</Data>
> </UserData>
> </Event>
> <Event Type="bar">
> <UserData>
> <Data Name="Param1">String</Data>
> <Data Name="Param2">String2</Data>
> <Data Name="Param3">String3</Data>
> </UserData>
> </Event>
> </Events>{noformat}
> parses to
> {noformat}
> [ {
> "Type" : "foo",
> "UserData" : {
> "Data" : {
> "Name" : "Param1",
> "Value" : "String1"
> }
> }
> }, {
> "Type" : "bar",
> "UserData" : {
> "Data" : {
> "Name" : "Param3",
> "Value" : "String3"
> }
> }
> } ]{noformat}
> Note that the second event has lost all but the last of its data content tags.
> It does not matter which event (first or second) has 1 tag, the other event
> loses content.
>
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)