Closed
Description
ElementTree's "findtext" function returns an empty string value if the element's text field contains an integer with value 0. Below example illustrates the issue:
import xml.etree.ElementTree as ET
# Create root element
test = ET.Element("test")
# Compute sum and difference on two numbers
firstNumber = 5000
secondNumber = 5000
sum = firstNumber + secondNumber
difference = firstNumber - secondNumber
# Create subelements for sum and difference values
el = ET.SubElement(test, "sum")
el.text = sum
el = ET.SubElement(test, "diff")
el.text = difference
# Print data types
print("type(sum): " + str(type(sum)))
print("type(diff): " + str(type(difference)))
print("type(sum subelt): " + str(type(test.findtext('./sum'))))
print("type(diff subelt): " + str(type(test.findtext('./diff'))))
# Print values of sub elements
print("sum subelt: " + str(test.findtext('./sum')))
print("diff subelt: " + str(test.findtext('./diff')))
This gives me the following output:
type(sum): <class 'int'>
type(diff): <class 'int'>
type(sum subelt): <class 'int'>
type(diff subelt): <class 'str'>
sum subelt: 10000
diff subelt:
Note how the data type of the "diff" sub-element is "string", even though the source data is an integer.
I'm using Python 3.8.10 on Linux Mint 20.1 Ulyssa (based on Ubuntu Focal Fossa 20.04).