This is an automated email from the ASF dual-hosted git repository.
turcsanyi pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi.git
The following commit(s) were added to refs/heads/main by this push:
new 3ef2ad9943 NIFI-9831: XML schema inference fix for XML elements with
attributes
3ef2ad9943 is described below
commit 3ef2ad99434461e603e7cd8b611906db05866568
Author: Peter Gyori <[email protected]>
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 <[email protected]>
---
.../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());