¿Cómo validar xml usando python sin librerías de terceros?

Tengo algunas piezas xml como esta:

  1979-09-23 Orene Ai'i Blues 453 170 F&W <---- a '&' here. 75  

¿Hay alguna forma de validar si las piezas xml están bien formateadas? ¿Hay alguna forma de validar el xml contra un DTD o un esquema XML?

Por varias razones no puedo usar ningún paquete de terceros.

por ejemplo, el xml anterior no es correcto ya que tiene un ‘&’ en él. Tenga en cuenta que la oración de definición de DOCTYPE se refiere a una DTD.

Solo intente analizarlo con ElementTree (xml.etree.ElementTree.fromstring): generará un error si el XML no está bien formado.

 >>> a = """ ... 1979-09-23 ... Orene Ai'i ... Blues ... 453 ... 170 ... F&W <---- a '&' here. ... 75 ... """ >>> >>> from xml.etree import ElementTree as ET >>> x = ET.fromstring(a) Traceback (most recent call last): File "", line 1, in  File "/usr/lib64/python2.7/xml/etree/ElementTree.py", line 1282, in XML parser.feed(text) File "/usr/lib64/python2.7/xml/etree/ElementTree.py", line 1624, in feed self._raiseerror(v) File "/usr/lib64/python2.7/xml/etree/ElementTree.py", line 1488, in _raiseerror raise err xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 7, column 24 

Puede usar el analizador XML xml.dom.minidom de python (que se encuentra en la biblioteca estándar, pero no es tan poderoso como las alternativas como lxml ).

Solo haz:

 import xml.dom.minidom xml.dom.minidom.parseString('') 

Obtendrá un xml.parsers.expat.ExpatError si el XML no es válido.