You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by jo...@apache.org on 2022/04/05 19:28:58 UTC

[nifi] 03/06: NIFI-9831: XML schema inference fix for XML elements with attributes

This is an automated email from the ASF dual-hosted git repository.

joewitt pushed a commit to branch support/nifi-1.16
in repository https://gitbox.apache.org/repos/asf/nifi.git

commit 5a6d93851a5cff025a0a19e13b6fbb138e8383ec
Author: Peter Gyori <pe...@gmail.com>
AuthorDate: Thu Mar 24 16:04:11 2022 +0100

    NIFI-9831: XML schema inference fix for XML elements with attributes
    
    This closes #5895.
    
    Signed-off-by: Peter Turcsanyi <tu...@apache.org>
---
 .../main/java/org/apache/nifi/xml/inference/XmlRecordSource.java  | 7 -------
 .../src/test/java/org/apache/nifi/xml/TestInferXmlSchema.java     | 8 ++++++++
 2 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/main/java/org/apache/nifi/xml/inference/XmlRecordSource.java b/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/main/java/org/apache/nifi/xml/inference/XmlRecordSource.java
index 3698aa690b..3192e141aa 100644
--- a/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/main/java/org/apache/nifi/xml/inference/XmlRecordSource.java
+++ b/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/main/java/org/apache/nifi/xml/inference/XmlRecordSource.java
@@ -116,13 +116,6 @@ public class XmlRecordSource implements RecordSource<XmlNode> {
                     arrayNode.addElement(childNode);
                     childNodes.put(childName, arrayNode);
                 }
-
-                final Iterator<?> childAttributeIterator = childStartElement.getAttributes();
-                while (childAttributeIterator.hasNext()) {
-                    final Attribute attribute = (Attribute) childAttributeIterator.next();
-                    final String attributeName = attribute.getName().getLocalPart();
-                    childNodes.put(attributeName, new XmlTextNode(attributeName, attribute.getValue()));
-                }
             }
         }
 
diff --git a/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/java/org/apache/nifi/xml/TestInferXmlSchema.java b/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/java/org/apache/nifi/xml/TestInferXmlSchema.java
index 3271ceb8e3..b5bdd76025 100644
--- a/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/java/org/apache/nifi/xml/TestInferXmlSchema.java
+++ b/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/java/org/apache/nifi/xml/TestInferXmlSchema.java
@@ -50,6 +50,9 @@ public class TestInferXmlSchema {
     public void testFlatXml() throws IOException {
         final RecordSchema schema = inferSchema("src/test/resources/xml/person.xml", false);
 
+        assertEquals(7, schema.getFieldCount());
+
+        assertSame(RecordFieldType.STRING, schema.getDataType("ID").get().getFieldType());
         assertSame(RecordFieldType.STRING, schema.getDataType("NAME").get().getFieldType());
         assertSame(RecordFieldType.INT, schema.getDataType("AGE").get().getFieldType());
         assertSame(RecordFieldType.STRING, schema.getDataType("COUNTRY").get().getFieldType());
@@ -63,6 +66,8 @@ public class TestInferXmlSchema {
     public void testFieldsFromAllRecordsIncluded() throws IOException {
         final RecordSchema schema = inferSchema("src/test/resources/xml/people_nested.xml", true);
 
+        assertEquals(8, schema.getFieldCount());
+
         assertSame(RecordFieldType.STRING, schema.getDataType("ID").get().getFieldType());
         assertSame(RecordFieldType.STRING, schema.getDataType("NAME").get().getFieldType());
         assertSame(RecordFieldType.INT, schema.getDataType("AGE").get().getFieldType());
@@ -89,6 +94,9 @@ public class TestInferXmlSchema {
     @Test
     public void testStringFieldWithAttributes() throws IOException {
         final RecordSchema schema = inferSchema("src/test/resources/xml/TextNodeWithAttribute.xml", true);
+
+        assertEquals(3, schema.getFieldCount());
+
         assertSame(RecordFieldType.INT, schema.getDataType("num").get().getFieldType());
         assertSame(RecordFieldType.STRING, schema.getDataType("name").get().getFieldType());