-
- Notifications
You must be signed in to change notification settings - Fork 33.1k
Closed
Labels
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).