I've been playing around with parsing XML with Python, and I've found that making a spelling mistake in my XML tags raises an ExpatError. Since I don't think my code is residing in a foreign country, to what does an ExpatError refer, in general?
Misspelled Code:
minidom.parseString("<people><pesron>Dan</person><person>John</person></people>")
Results In:
ExpatError Traceback (most recent call last)
<ipython-input-5-9c00296c48cb> in <module>()
----> 1 minidom.parseString("<people><pesron>Dan</person><person>John</person></people>")
/Library/Frameworks/Python.framework/Versions/7.3/lib/python2.7/xml/dom/minidom.pyc in parseString(string, parser)
1928 if parser is None:
1929 from xml.dom import expatbuilder
-> 1930 return expatbuilder.parseString(string)
1931 else:
1932 from xml.dom import pulldom
/Library/Frameworks/Python.framework/Versions/7.3/lib/python2.7/xml/dom/expatbuilder.pyc in parseString(string, namespaces)
938 else:
939 builder = ExpatBuilder()
--> 940 return builder.parseString(string)
941
942
/Library/Frameworks/Python.framework/Versions/7.3/lib/python2.7/xml/dom/expatbuilder.pyc in parseString(self, string)
221 parser = self.getParser()
222 try:
--> 223 parser.Parse(string, True)
224 self._setup_subset(string)
225 except ParseEscape:
ExpatError: mismatched tag: line 1, column 21
Summing up and expanding on the comments to the question:
ExpatError is the type of exception raised when expat reports an error. expat is the Python Standard Library's XML parsing module.
minidom, Python's minimal implementation of the Document Object Model interface, uses expat internally to parse the XML input when minidom.parseString() is called.
The typo in the input XML left it with a <pesron> tag that is not closed, triggering expat to indicate this by throwing the ExpatError.
As to the origin of the name expat, rather than being a reference to "expatriate" in English, it is a shortened version of the module's description: (E)Xml PArser Toolkit.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With