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());