diff --git a/src/main/scala/com/databricks/spark/xml/parsers/StaxXmlParser.scala b/src/main/scala/com/databricks/spark/xml/parsers/StaxXmlParser.scala index 3b568641..ebb443e3 100644 --- a/src/main/scala/com/databricks/spark/xml/parsers/StaxXmlParser.scala +++ b/src/main/scala/com/databricks/spark/xml/parsers/StaxXmlParser.scala @@ -112,6 +112,7 @@ private[xml] object StaxXmlParser { case _: EndElement if data.isEmpty => null case _: EndElement if options.treatEmptyValuesAsNulls => null case _: EndElement => data + case _ => convertField(parser, dataType, options) } case (c: Characters, ArrayType(st, _)) => diff --git a/src/main/scala/com/databricks/spark/xml/util/InferSchema.scala b/src/main/scala/com/databricks/spark/xml/util/InferSchema.scala index c7e945ab..4eda10f9 100644 --- a/src/main/scala/com/databricks/spark/xml/util/InferSchema.scala +++ b/src/main/scala/com/databricks/spark/xml/util/InferSchema.scala @@ -143,6 +143,7 @@ private[xml] object InferSchema { case _: EndElement if data.isEmpty => NullType case _: EndElement if options.treatEmptyValuesAsNulls => NullType case _: EndElement => StringType + case _ => inferField(parser, options) } case c: Characters if !c.isWhiteSpace => // This means data exists diff --git a/src/test/resources/null-nested-struct.xml b/src/test/resources/null-nested-struct.xml index 47e50dca..dc90ea26 100644 --- a/src/test/resources/null-nested-struct.xml +++ b/src/test/resources/null-nested-struct.xml @@ -2,6 +2,7 @@ + 1 @@ -10,6 +11,9 @@ + + +